我有一个脚本可以在同一电子表格中复制工作表:
function duplicateSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var devis = ss.getActiveSheet();
devis.copyTo(ss).setName('CopyDevis');
它工作正常,但是复制选项卡在电子表格的最右侧创建。这是一个问题,因为我有很多选项卡,并且我必须转到最右边,然后再将其移回左边。我想在原件旁边创建副本。
我知道moveActivesheet函数,但是我不想使用它,因为它使我不得不激活副本(setActivesheet)-由于某种原因,我希望在不更改活动表的情况下完成该过程。
因此,我调查了getIndex()(它将告诉我活动工作表的位置并在其旁边创建副本-但CopyTo不允许使用此变量(我认为)。
InsertSheet()无效,因为它将使新工作表处于活动状态。
任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
在电子表格上创建重复项时,它会立即在活动工作表的右侧创建它。但是,如果您将其创建为正确端的最后一个。然后,此功能将完成您所请求的操作。
function moveLastSheetOnePositionToRightOfTheActiveSheet() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var actidx=sh.getIndex();
var shts=ss.getSheets();
if(sh) {
Sheets.Spreadsheets.batchUpdate(
{
requests:[
{
"updateSheetProperties":
{
"properties":
{
"sheetId":shts[shts.length-1].getSheetId(),
"index": actidx
},
"fields": "index"
}
}
]
}, ss.getId());
}
}