Javascript 将特定颜色的每个选项卡移动到单独的工作簿中

Javascript 将特定颜色的每个选项卡移动到单独的工作簿中,javascript,google-apps-script,google-sheets,google-sheets-api,Javascript,Google Apps Script,Google Sheets,Google Sheets Api,不久前,我问了一个类似的问题,涉及将特定颜色的标签移动到标签的末尾。这个问题的答案是 现在,我需要从不断增长的工作簿中删除所有这些选项卡。我有另一个用于死掉交易的工作簿,但手动移动每个选项卡将花费太长时间。是否有类似于上面答案中的功能,可以将特定颜色的所有选项卡移动到一个完全不同的工作簿中,还是我一直在手动操作 以下是我得到的代码: 函数moveSheetsOfAColorToEnd(颜色){ var color=color | |'#ff0000'; 如果(颜色){ var ss=Spread

不久前,我问了一个类似的问题,涉及将特定颜色的标签移动到标签的末尾。这个问题的答案是

现在,我需要从不断增长的工作簿中删除所有这些选项卡。我有另一个用于死掉交易的工作簿,但手动移动每个选项卡将花费太长时间。是否有类似于上面答案中的功能,可以将特定颜色的所有选项卡移动到一个完全不同的工作簿中,还是我一直在手动操作

以下是我得到的代码:

函数moveSheetsOfAColorToEnd(颜色){
var color=color | |'#ff0000';
如果(颜色){
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();

对于(var i=0;i您可以使用
SpreadsheetApp.getSheets()
来获取一个表格数组。然后对于每个表格,您可以使用copyTo(电子表格)方法,然后删除该表格。这非常简单。

我不确定使用的背后是否有原因,但您可以不使用by来完成此操作:

(1) 定义目标电子表格。例如,在代码顶部添加此行(并将相应的
id
更改为您的):

(2) 用于将每张工作表复制到目标电子表格和。因此,您应更改此选项:

        Sheets.Spreadsheets.batchUpdate(
          {
            requests:[
              {
                "updateSheetProperties": 
                {             
                  "properties":
                  {
                    "sheetId":shts[i].getSheetId(),
                    "index": shts.length
                  },
                  "fields": "index"                      
                }
              }
            ]
          }, ss.getId());
为此:

        shts[i].copyTo(dest);
        ss.deleteSheet(shts[i]);

我希望这能有所帮助。

lamblichus回答了我上面的问题。对于任何想要/需要查看代码的人来说,这就是代码的最终外观:

function moveSheetsOfAColorToDead(color) {
  var color=color || '#ff0000';
  var dest=SpreadsheetApp.openById('destination id here')
  if(color) {
    var ss=SpreadsheetApp.getActive();
    var shts=ss.getSheets();
    for(var i=0;i<shts.length;i++) {
      if(shts[i].getTabColor()==color) {            
        shts[i].copyTo(dest);
        ss.deleteSheet(shts[i]);
      }
    }
  }
}
函数movesheetsofacolortohead(彩色){
var color=color | |'#ff0000';
var dest=SpreadsheetApp.openById('destination id here')
如果(颜色){
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();

对于(var i=0;iYes。您可以修改该代码以更改其行为以满足您的新需求。一旦您努力这么做并遇到困难,您可以解释您遇到的问题,包括代码的相关部分,并询问与该代码相关的特定问题,我们可以尝试提供帮助。这还不够好以前我需要通过编写代码来帮助我,但现在我需要对其进行更改以满足新的网站要求-我们不是免费的代码编写服务。如果您自己无法尝试更改,请雇佣一名承包商为您进行更改。我不是一个不先尝试就寻求帮助的人。由于我有限的编码知识,我无法确定如何处理代码,这就是我问的原因。然后展示你的代码,解释你遇到的问题,并问一个与代码相关的问题。再说一遍,我们不是免费的编码服务。再次感谢Cooper。我会查看你提供的有用信息,看看我能不能找到答案。
function moveSheetsOfAColorToDead(color) {
  var color=color || '#ff0000';
  var dest=SpreadsheetApp.openById('destination id here')
  if(color) {
    var ss=SpreadsheetApp.getActive();
    var shts=ss.getSheets();
    for(var i=0;i<shts.length;i++) {
      if(shts[i].getTabColor()==color) {            
        shts[i].copyTo(dest);
        ss.deleteSheet(shts[i]);
      }
    }
  }
}