Google apps script 检查图纸名称并选择有效的图纸名称
我在一个谷歌驱动器中有两个电子表格,每个都有两个表格,我想迭代它们,并在我之前指定的表格中的指定范围内复制特定范围。 我可以遍历这些文件,但我可以对照我的工作表列表检查工作表名称。我将所需工作表列表存储在Google apps script 检查图纸名称并选择有效的图纸名称,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我在一个谷歌驱动器中有两个电子表格,每个都有两个表格,我想迭代它们,并在我之前指定的表格中的指定范围内复制特定范围。 我可以遍历这些文件,但我可以对照我的工作表列表检查工作表名称。我将所需工作表列表存储在valid变量中,该变量从电子表格的指定范围读取。我检查了小写/大写,工作表名称有些是字符串,有些是数字。但我的情况并没有影响到任何事情。我尝试了indexOf和includes,知道怎么了吗 var App = SpreadsheetApp; var ss = App.openById("**
valid
变量中,该变量从电子表格的指定范围读取。我检查了小写/大写,工作表名称有些是字符串,有些是数字。但我的情况并没有影响到任何事情。我尝试了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
};
};
var-App=电子表格应用程序;
var ss=App.openById(“**”)//目的地SS
var sh=ss.getSheetByName(“数据”);
var files=DriveApp.getFolderById(“****”).getFiles();
var valid=ss.getRangeByName('ValidNames').getValues();
函数循环(){
while(files.hasNext()){
var f=files.next();
如果(f==ss.getName())继续;
var file=App.openById(f.getId());
var sheets=file.getSheets();
对于(var i=0;i-1)sh.appendRow([Date.now(),f,s]);//不工作
};
};
谢谢,
M如果只有一列,您可以使用以下内容:
var valid = ss.getRangeByName('ValidNames').getValues().map(function(r){return r[0]});
以下是我的函数:
function myFunction() {
var ss = SpreadsheetApp.openById('ssid'); //Destination SS
var sh = ss.getSheetByName("Data");
var files = DriveApp.getFolderById("****").getFilesByType(MimeType.GOOGLE_SHEETS);//included mimetype
var valid = ss.getRangeByName('ValidNames').getValues().map(function(r){return r[0]});
while (files.hasNext()){
var f=files.next();
if (f==ss.getName())continue;
var file=SpreadsheetApp.openById(f.getId());
var sheets = file.getSheets();
for (var i=0;i<sheets.length;i++) {
var s= sheets[i].getName().toUpperCase();
if (valid.indexOf(s)>-1)sh.appendRow([Date.now(),f, s ]); // Not Working
}
}
}
函数myFunction(){
var ss=SpreadsheetApp.openById('ssid');//目的地ss
var sh=ss.getSheetByName(“数据”);
var files=DriveApp.getFolderById(“**”).getFilesByType(MimeType.GOOGLE_SHEETS);//包含的MimeType
var valid=ss.getRangeByName('ValidNames').getValues().map(函数(r){return r[0]});
while(files.hasNext()){
var f=files.next();
如果(f==ss.getName())继续;
var file=SpreadsheetApp.openById(f.getId());
var sheets=file.getSheets();
对于(var i=0;i-1)sh.appendRow([Date.now(),f,s]);//不工作
}
}
}
我还删除了函数循环,因为它对我来说毫无意义。你的工作表列表在哪里?我编辑了我的问题。我将它们存储在Valid变量中,该变量从我的ssValid中读取,它是一个二维数组。即使只有一列,也需要将其展平以使用indexOf()。尝试映射方法。还有一个问题,你们知道为什么我不能对工作表上的每个循环进行映射吗?我有
varx;对于(工作表中的x){var s=x.getName();}
但无法从x!获取名称!。我做错什么了吗?!我没有看到for循环。一般来说,它没有通过,所以我把它改为for(I)循环。