因此,我的问题是,我有一个脚本,可以将一组独立的单页google电子表格作为选项卡复制到一个主电子表格中,但由于我使用的是“标题包含”,所以它为不存在的电子表格创建了工作表(选项卡)(在下面的示例中:它将制作"ADC午餐“,即使该表不存在)。我有大约50个这样的脚本,怎样才能确保只有实际的电子表格文件与其名称相对应,才能在我的主电子表格中存在?我当时想的可能是一个"if然后“,比如IF(ID=true,sheet.copyTo(目的地).setName(”ADC早餐“)),但是我还没有太多的api脚本经验,所以我不知道如何围绕这个函数来表述它。任何帮助都将不胜感激,谢谢。
说明:
问题:
主电子表格通过“标题包含”搜索电子表格X,如果它找不到一个具有特定要求的电子表格,它只是将另一个电子表格作为电子表格X复制到主电子表格中。如果主电子表格实际存在并满足“标题包含”参数,那么如何使它只复制电子表格到主电子表格(作为选项卡)?我希望这能澄清一些事情,很抱歉我的描述很差。
function ArrayBuilder() {
var filesource = DriveApp.searchFiles('title contains "ADC Breakfast" and parents in "File_ID"');
while(filesource.hasNext()){
var File = filesource.next();
var ID = File.getId();
}
var name = File.getName()
var source = SpreadsheetApp.openById(ID);
var sheet = source.getSheets()[0];
var destinationID = "File_ID";
var destination = SpreadsheetApp.openById(destinationID);
sheet.copyTo(destination).setName("ADC Breakfast"); 发布于 2019-11-17 00:42:10
查找只有一个工作表的电子表格
我知道这不是你问题的答案,但也许它会帮助你从另一个角度去思考它。此函数查找只有一个工作表的电子表格,并将文件名、文件id和工作表名称附加到电子表格中。它还向文件名添加了一个扩展名,如(n),其中n是一个整数,指示有多少文件具有该名称。使用电子表格中的信息,您可能会知道哪些是您想要复制到您的主电子表格中,或者如果您希望帮助修改它,请告诉我。
function findSpreadsheetsWithOnlyOneSheet() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('File Data Sheet');
var nA=[];
var nObj={};
var files=DriveApp.getFolderById('Folder Id').getFilesByType(MimeType.GOOGLE_SHEETS);
while(files.hasNext()) {
var file=files.next();
var id=file.getId();
var name=file.getName();
if(Sheets.Spreadsheets.get(id).sheets.length==1) {
var sheetname=Sheets.Spreadsheets.get(file.getId()).sheets[0].properties.title;
if(nA) {
if(nA.indexOf(name)==-1) {
nA.push(name);
sh.appendRow([name,id,sheetname]);
}else{
if(nObj.hasOwnProperty(name)) {
nObj[name]+=1;
}else{
nObj[name]=1;
}
sh.appendRow([name + '(' + nObj[name] + ')',id,sheetname])
}
}else{
sh.appendRow([name,id,sheetname]);
}
}
}
}这就是我的电子表格的样子:

https://stackoverflow.com/questions/58893488
复制相似问题