【发布时间】:2019-05-16 19:36:54
【问题描述】:
我在谷歌驱动器中有几个电子表格,每个都有几个工作表,我想遍历它们并在我之前指定的工作表中复制特定范围。
我可以遍历文件,但我可以对照我的工作表列表检查工作表名称。我将所需工作表的列表存储在valid 变量中,该变量从我的电子表格的命名范围中读取。我检查了小写/大写,工作表名称有些是字符串,有些是数字。但我的 if 条件没有抓住任何东西。我尝试了indexOf 和includes,知道有什么问题吗?
var App = SpreadsheetApp;
var ss = App.openById("****"); //Destination SS
var sh = ss.getSheetByName("Data");
var files = DriveApp.getFolderById("****").getFiles();
var valid = ss.getRangeByName('ValidNames').getValues();
function Loop() {
while (files.hasNext()){
var f = files.next();
if (f == ss.getName()) continue;
var file = App.openById(f.getId());
var sheets = file.getSheets();
for (var i=0 ; i<sheets.length ; i++) {
var s= sheets[i].getName().toUpperCase();
if (valid.includes(s)) sh.appendRow([Date.now(),f, s ]); // Not working? Shows Error
if (valid.indexOf(s)> -1) sh.appendRow([Date.now(),f, s ]); // Not Working
};
};
谢谢, M
【问题讨论】:
-
您的工作表列表在哪里?
-
我编辑了我的问题。我将它们存储在 Valid 变量中,该变量是从我的 ss 读取的
-
有效的是一个二维数组。即使它只有一列,您仍然需要将其展平以使用 indexOf()。试试map方法。
标签: google-apps-script google-sheets