首页 > 解决方案 > 将工作表复制为新电子表格的脚本无法正常工作

问题描述

我有这个脚本将实际工作表复制为一个新的电子表格,命名为 I2 Cell 中的值:

function CopySheet(){
var sheet = SpreadsheetApp.getActiveSheet(); // Get current active sheet.
var sheet_name = sheet.getRange("i2").getValue(); // Get the value of cell B1, used to name the new spreadsheet.

var folder = DriveApp.getFolderById("xxxxxxxxxxxxx"); // Get the ID of the folder where you will place a copy of the spreadsheet.

var newSS = SpreadsheetApp.create(sheet_name); // create new blank spreadsheet in a root folder
var asFile = DriveApp.getFileById(newSS.getId()); // get new spreadsheet as a file

folder.addFile(asFile); // add this file to destination folder
DriveApp.getRootFolder().removeFile(asFile); // remove a file from root folder

var copiedSheet = sheet.copyTo(newSS); // copy active sheet to new spreadsheet
copiedSheet.setName(sheet_name); // rename copied sheet
newSS.deleteSheet(newSS.getSheetByName('Sheet1')); // remove "Sheet1" sheet which was created by default in new spreadsheet
}

编写精美的副本表作为新的电子表格,但有丑陋的“Sheet1”。当脚本到达第 15 行时:newSS.deleteSheet(newSS.getSheetByName('Sheet1'));我收到错误:异常:参数 nie może być zerowy: sheet (wiersz 15, plik „Kod") - Argue 不能为零:工作表(第 15 行,文件“Kod”)。

请寻求帮助。

标签: google-apps-script

解决方案


这个答案怎么样?请认为这只是几个可能的答案之一。

问题和解决方法:

我认为在您的情况下,默认工作表的工作表名称可能不是“Sheet1”。因此,作为一种解决方法,如何在不使用工作表名称的情况下删除默认工作表?

修改后的脚本如下。请按如下方式修改您的脚本。

修改后的脚本:

从:
newSS.deleteSheet(newSS.getSheetByName('Sheet1'));
至:
newSS.deleteSheet(newSS.getSheets()[0]);

或者

newSS.deleteSheet(newSS.getSheets().filter(function(s) {return s.getSheetId() == 0})[0]);

参考:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。


推荐阅读