我在一个非常简单的脚本上收到服务器错误,我不知道为什么。脚本的目的是检查工作表是否已存在。如果工作表确实存在,则应删除并重新创建。如果它不存在,则应该创建它。
如果工作表尚未存在,脚本可以正常工作。如果它确实存在,脚本将删除工作表,然后在.insertSheet(" Test")的行上抛出以下错误。
"我们很抱歉,发生了服务器错误。请稍等一下再试一次。"
非常感谢任何帮助!
function newSheet() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(),
sheet = spreadsheet.getSheetByName("Test");
if(sheet != null){
spreadsheet.deleteSheet(sheet);
}
spreadsheet.insertSheet("Test");
}

答案 0 :(得分:4)
尝试,传入索引......
function newSheet() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(),
sheet = spreadsheet.getSheetByName("Test");
if (sheet != null) {
spreadsheet.deleteSheet(sheet);
}
spreadsheet.insertSheet("Test", spreadsheet.getSheets().length);
}
看看是否有效?
答案 1 :(得分:1)
我得到了同样的错误。这可能是一个错误。您可能需要使用sheet.clear()
。
也许有些代码如下:
function newSheet() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(),
sheet = spreadsheet.getSheetByName("Test");
if(sheet != null){
sheet.clear();
} else {
spreadsheet.insertSheet("Test");
}
}
不要删除工作表并创建另一个同名工作表,只需清除当前工作表中的所有内容即可。我不确定您有什么优势可以删除表格,清算有望为您提供所需的结果。如果没有,我很想知道为什么需要删除工作表?
答案 2 :(得分:0)
如果工作表不存在,脚本可能会抛出错误。你可以将它放在try-catch块中。
function newSheet() {
var sheet, spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
try {
sheet = spreadsheet.getSheetByName("Test");
spreadsheet.deleteSheet(sheet);
} catch (e) {};
spreadsheet.insertSheet("Test");
}