Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌脚本:在谷歌电子表格中删除特定工作表的问题 情况: 我有一个20页的电子表格 我有其他脚本,每天从其他电子表格复制工作表到此电子表格- 我需要每天从特定的电子表格中删除一些特定的表格 问题:_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 谷歌脚本:在谷歌电子表格中删除特定工作表的问题 情况: 我有一个20页的电子表格 我有其他脚本,每天从其他电子表格复制工作表到此电子表格- 我需要每天从特定的电子表格中删除一些特定的表格 问题:

Google apps script 谷歌脚本:在谷歌电子表格中删除特定工作表的问题 情况: 我有一个20页的电子表格 我有其他脚本,每天从其他电子表格复制工作表到此电子表格- 我需要每天从特定的电子表格中删除一些特定的表格 问题:,google-apps-script,google-sheets,Google Apps Script,Google Sheets,当脚本结束以清除工作表时,电子表格将挂起,我必须退出并重新进入电子表格 如果有人能在不挂电子表格的情况下帮助修改此脚本,我将不胜感激 脚本: 试试我使用的这个版本,没有问题 function DeleteSheets(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheets = ['sheet1','sheet2','sheet3']; var numberOfSheets = ss.getSheets().leng

当脚本结束以清除工作表时,电子表格将挂起,我必须退出并重新进入电子表格

如果有人能在不挂电子表格的情况下帮助修改此脚本,我将不胜感激

脚本:
试试我使用的这个版本,没有问题

function DeleteSheets(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ['sheet1','sheet2','sheet3']; 
  var numberOfSheets = ss.getSheets().length;
  for(var s = numberOfSheets-1; s>0 ; s--){ // in my case I never delete the first sheet
    SpreadsheetApp.setActiveSheet(ss.getSheets()[s]);
    var shName = SpreadsheetApp.getActiveSheet().getName();

    if(sheets.indexOf(shName)>-1){
      var delSheet = ss.deleteActiveSheet();
      Utilities.sleep(500);
    }
  }
    SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);// send me back to first sheet
}
当然,您可以使用名称数组作为函数的参数,或者——在某些情况下我就是这样做的——给出我需要保留的工作表的名称,在这种情况下,if条件只是不同而已。 睡眠时间可以是400毫秒,不确定有什么不同,我用500,因为有时我发现它更可靠。。。我(尽量)永远不要改变一个有效的解决方案;-)


编辑以下评论:

要激活名为“更新”的工作表,只需更改代码的最后一行,如下所示:

SpreadsheetApp.setActiveSheet(ss.getSheetByName('Updated'));

还请注意,我在原始代码中移动了这一行,在循环之外,为这个小错误感到抱歉^^

感谢Serge的快速更新,但是这个脚本得到了这个错误“(class)(class)setActiveSheet((class))”。我想是因为我每次使用CopySheet脚本时,ID都会增加。我需要知道删除工作表的名称。为什么我复制工作表而不复制行,因为我不知道该由谁将行从工作表1复制到工作表1,再复制到其他电子表格。这就是我实现两个脚本的原因,一个用于删除所有具有特定名称的工作表,另一个用于从电子表格a复制到B。Serge:-您的脚本工作,但不会根据您的更新删除第一个工作表。-您的脚本删除工作表非常快,但我有一个问题,第一张工作表是“sheet1”,当脚本结束并尝试将工作表0设置为活动状态时,我需要删除的工作表与此相同。如果你能帮助将名为“Updated”的工作表设置为活动状态,我认为这将解决挂起问题。请参阅编辑,并用新的更新版本更改代码,有一个小错误并没有阻止它工作,但最好是这样。Serge:你的脚本返回名为“Updated”的工作表谢尔盖:我改为(var s=numberOfSheets-1;s>=0;s--)我认为这不是正确的方法,因为在这种情况下,可能会删除所有>=0的工作表。当我运行它工作,但删除一些其他工作表,如Sheet10,我注销和登录,该工作表再次出现在Sheet10中。
SpreadsheetApp.setActiveSheet(ss.getSheetByName('Updated'));