google-apps-script - 将工作表复制为新电子表格的脚本无法正常工作
问题描述
我有这个脚本将实际工作表复制为一个新的电子表格,命名为 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”)。
请寻求帮助。
解决方案
这个答案怎么样?请认为这只是几个可能的答案之一。
问题和解决方法:
我认为在您的情况下,默认工作表的工作表名称可能不是“Sheet1”。因此,作为一种解决方法,如何在不使用工作表名称的情况下删除默认工作表?
修改后的脚本如下。请按如下方式修改您的脚本。
修改后的脚本:
从:newSS.deleteSheet(newSS.getSheetByName('Sheet1'));
至:
newSS.deleteSheet(newSS.getSheets()[0]);
或者
newSS.deleteSheet(newSS.getSheets().filter(function(s) {return s.getSheetId() == 0})[0]);
参考:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
推荐阅读
- c# - 在 .Net Core Web Api 中读取 LocalStorage 值
- jquery - jquery中的窗口onload事件没有触发
- react-native - React Native:将本地 PDF 文件保存到用户设备
- javascript - 如何在 jquery 中的 beforeSend() 上延迟加载程序
- c# - 序列在 asp core 和 sql server 2016 中不包含任何元素
- iteration - Gekko 处理代数/隐式循环
- javascript - 如何处理递增和递减 ko.observables 浮点数
- python - 如何将图像(播放器)旋转到鼠标方向?
- uwp - 与 CanvasControl 相关的奇怪内存泄漏
- flutter - 滚动控制器未附加到任何滚动视图(Swiper)