Google apps script 我如何使用“如何对多个电子表格执行操作?”;OpenbyID“;在谷歌脚本中

Google apps script 我如何使用“如何对多个电子表格执行操作?”;OpenbyID“;在谷歌脚本中,google-apps-script,Google Apps Script,请容忍我,因为我是一个新手,但我已经形成了一个列表的ID的电子表格,我有一个文件夹,我已经在一个表中存储在1列。我正在尝试执行一个脚本,该脚本将进入这些电子表格中,并删除其中的给定名称的表格。到目前为止,这就是我所拥有的,但我不确定我在哪里搞砸了: function cleanAllOld () { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('fileList'); v

请容忍我,因为我是一个新手,但我已经形成了一个列表的ID的电子表格,我有一个文件夹,我已经在一个表中存储在1列。我正在尝试执行一个脚本,该脚本将进入这些电子表格中,并删除其中的给定名称的表格。到目前为止,这就是我所拥有的,但我不确定我在哪里搞砸了:

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);
  } 

}
}