不久前,我问了一个类似的问题,涉及将某种颜色的标签移动到标签的末尾。该问题的答案是HERE
现在,我需要从不断增长的工作簿中删除所有这些选项卡。我还有另一本处理无效交易的工作簿,但是手动移动每个标签将花费很长时间。是否有与上述答案中的功能相似的功能,它将某种颜色的所有选项卡移至完全不同的工作簿中,还是我被手动执行?
这是我得到的代码:
function moveSheetsOfAColorToEnd(color) {
var color=color || '#ff0000';
if(color) {
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
for(var i=0;i<shts.length;i++) {
if(shts[i].getTabColor()==color) {
Sheets.Spreadsheets.batchUpdate(
{
requests:[
{
"updateSheetProperties":
{
"properties":
{
"sheetId":shts[i].getSheetId(),
"index": shts.length
},
"fields": "index"
}
}
]
}, ss.getId());
}
}
}
}
我真的不太了解javascript(如果是javascript),不足以理解什么。我猜想
Sheets.Spreadsheets.batchUpdate{}
中的位需要更改,但是我不知道将其更改为什么。 最佳答案
我不确定使用Sheets API背后是否有原因,但是您可以通过以下方式不使用Advanced Service来完成此操作:
(1)定义目标电子表格。例如,通过在代码顶部添加以下行(并将相应的id
更改为您的代码)来添加open your spreadsheet by id:
var dest = SpreadsheetApp.openById("your-destination-spreadsheet-id");
(2)使用copyTo(spreadsheet)将每个工作表复制到目标电子表格和deleteSheet(sheet)。因此,您应该更改此设置:
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]);
希望对您有所帮助。
关于javascript - 将特定颜色的每个选项卡移动到单独的工作簿,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59182077/