【问题标题】:How to get number of sheet from list如何从列表中获取工作表的数量
【发布时间】:2016-07-18 02:18:10
【问题描述】:

脚本应该做什么。首先,从工作表 List_1 的范围中获取工作表名称。然后,使用这个名称数组,只在这些表上放置一些数据。 https://docs.google.com/spreadsheets/d/1Xdws6Vr6YVXuj19mvpOvkpJokOfY2T7Sh1aMpous_Xw/edit#gid=0

function VList() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var sheetNames = ss.getSheetByName("List_1");
var rangeNames = sheetNames.getRange("B3:B5").getValues();

  for (var sheetId = 0; sheetId<sheets.length; sheetId++){
   if(sheets[sheetId].getSheetName() == rangeNames) {
   ss.getRange("C1").setValue("done");  
    }
   } 
} 

问题。当脚本启动时 - 没有任何反应。如何仅在它们上获取工作表和 vlookup 的数量?也许,存在一些类似“getSheetId”的函数,可以获取工作表的数量。

已解决,感谢 bruce。

function VList() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var sheetNames = ss.getSheetByName("List_1").getRange("B3:B5").getValues();

 sheetNames.forEach(function(row) {
 var sheet = ss.getSheetByName (row[0]);
 if (!sheet) throw 'missing sheet ' + row[0];
 sheet.getRange("c1").setValue ("done");
 });

} 

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    getValues() 返回一个二维数组,然后您将其与字符串值进行比较 - 所以这永远不会是真的。

    一旦你解决了这个问题,你仍然会多次更新同一个单元格,C1 'done' - ss 指向 List_1 工作表 - 我假设你的意思是更新名称在列表中的工作表。

    为什么不直接使用 b3:b5 中的列表来简单地按名称获取每个工作表并更新它?由于您已经知道它们的名称,因此无需查看工作表列表。

    类似

    ss.getSheetByName("List_1").getRange("b3:b5").getValues()
    .forEach(function(row) {
      var sheet = ss.getSheetByName (row[0]);
      if (!sheet) throw 'missing sheet ' + row[0];
      sheet.getRange("c1").setValue ("done");
    });
    

    【讨论】:

    • 谢谢布鲁斯,现在可以了!永远不要使用 forEach,所以它对我来说是新的体验)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    相关资源
    最近更新 更多