Google apps script 我如何使用“如何对多个电子表格执行操作?”;OpenbyID“;在谷歌脚本中
请容忍我,因为我是一个新手,但我已经形成了一个列表的ID的电子表格,我有一个文件夹,我已经在一个表中存储在1列。我正在尝试执行一个脚本,该脚本将进入这些电子表格中,并删除其中的给定名称的表格。到目前为止,这就是我所拥有的,但我不确定我在哪里搞砸了:Google apps script 我如何使用“如何对多个电子表格执行操作?”;OpenbyID“;在谷歌脚本中,google-apps-script,Google Apps Script,请容忍我,因为我是一个新手,但我已经形成了一个列表的ID的电子表格,我有一个文件夹,我已经在一个表中存储在1列。我正在尝试执行一个脚本,该脚本将进入这些电子表格中,并删除其中的给定名称的表格。到目前为止,这就是我所拥有的,但我不确定我在哪里搞砸了: function cleanAllOld () { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('fileList'); v
function cleanAllOld () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('fileList');
var numberFiles = sheet.getLastRow();
for (var i=0; i<numberFiles; i++) {
try{
// File to be cleaned
var fileID = sheet.getRange(2+i, 1, numberFiles-1).getValues();
var destination = SpreadsheetApp.openById(fileID[i]);
var sheet1 = destination.getSheetByName('Copy of CALC');
var sheet2 = destination.getSheetByName('Copy of Print');
var sheet3 = destination.getSheetByName('Copy of Markbook');
if (destination.sheet1 == null) {
} else {
destination.deleteSheet(sheet1);
}
if (destination.sheet2 == null) {
} else {
destination.deleteSheet(sheet2);
}
if (destination.sheet3 == null) {
} else {
destination.deleteSheet(sheet3);
}
}
catch (e) {
Logger.log(e);
}
}
}
函数cleanalold(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName('fileList');
var numberFiles=sheet.getLastRow();
对于(var i=0;i,getValues()
方法返回一个二维数组。您从以下位置获得错误消息:
var destination = SpreadsheetApp.openById(fileID[i])
尝试使用:
var destination = SpreadsheetApp.openById(fileID[i][0])
添加第二个带零的索引。解决了这个问题,我已将下面更正的行加粗
function cleanAllOld () {
var ss = SpreadsheetApp.openById('...');
var sheet = ss.getSheetByName('fileList');
var numberFiles = sheet.getLastRow();
for (var i=0; i<numberFiles; i++) {
// File to be cleaned
**var fileID = sheet.getRange(1, 1, numberFiles).getValues();**
Logger.log('fileID[i][0]: ' + fileID[i][0]);
var destination = SpreadsheetApp.openById(fileID[i][0]);
var sheet1 = destination.getSheetByName('Copy of CALC');
var sheet2 = destination.getSheetByName('Copy of Print');
var sheet3 = destination.getSheetByName('Copy of Markbook');
if (sheet1 === null) {
} else {
destination.deleteSheet(sheet1);
}
if (sheet2 === null) {
} else {
destination.deleteSheet(sheet2);
}
if (sheet3 === null) {
} else {
destination.deleteSheet(sheet3);
}
}
}
函数cleanalold(){
var ss=SpreadsheetApp.openById(“…”);
var sheet=ss.getSheetByName('fileList');
var numberFiles=sheet.getLastRow();
对于(var i=0;iIs是否有错误消息?如果有,错误消息和发生错误的行是什么?如果没有错误消息,结果是什么?代码是否正在运行?看起来您正在尝试删除工作表,而不是文件夹。嗨,Sandy,刚刚让它运行完代码,它在var destination=Spreadshee处发现了错误tApp.openById(fileID[i]);(错误消息:无效参数:id(第78行,文件“代码”))很抱歉不够清晰,但我正在考虑从某些电子表格中删除这些表格(从给定的驱动器文件夹中收集)抱歉,我刚刚意识到我没有正确注释@SandyGoodThanks,没有注意到冗余。我以前成功地独立运行了脚本的这一部分(每次使用一个电子表格)。谢谢,这解决了该步骤,但现在我收到消息(“无效参数:id”)如何确定有问题的代码行在哪里?在“视图”菜单中,选择“执行记录”。在日志底部,它将说明错误及其发生的行。出于开发目的,请不要使用try/catch
。我认为这将阻止执行记录显示错误发生的行n、 好的,我在同一行(更新为无效参数:id(第78行,文件“Code”))上得到了它。我已经用编辑过的脚本提出了这个问题,以便更容易理解。
function cleanAllOld () {
var ss = SpreadsheetApp.openById('...');
var sheet = ss.getSheetByName('fileList');
var numberFiles = sheet.getLastRow();
for (var i=0; i<numberFiles; i++) {
// File to be cleaned
**var fileID = sheet.getRange(1, 1, numberFiles).getValues();**
Logger.log('fileID[i][0]: ' + fileID[i][0]);
var destination = SpreadsheetApp.openById(fileID[i][0]);
var sheet1 = destination.getSheetByName('Copy of CALC');
var sheet2 = destination.getSheetByName('Copy of Print');
var sheet3 = destination.getSheetByName('Copy of Markbook');
if (sheet1 === null) {
} else {
destination.deleteSheet(sheet1);
}
if (sheet2 === null) {
} else {
destination.deleteSheet(sheet2);
}
if (sheet3 === null) {
} else {
destination.deleteSheet(sheet3);
}
}
}