简单的“删除工作表/插入工作表”脚本上的服务器错误

时间:2014-12-17 16:54:37

标签: javascript google-apps-script google-sheets

我在一个非常简单的脚本上收到服务器错误,我不知道为什么。脚本的目的是检查工作表是否已存在。如果工作表确实存在,则应删除并重新创建。如果它不存在,则应该创建它。

如果工作表尚未存在,脚本可以正常工作。如果它确实存在,脚本将删除工作表,然后在.insertSheet(" Test")的行上抛出以下错误。

"我们很抱歉,发生了服务器错误。请稍等一下再试一次。"

非常感谢任何帮助!



function newSheet() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(),
      sheet = spreadsheet.getSheetByName("Test");
  if(sheet != null){
    spreadsheet.deleteSheet(sheet); 
  }
  spreadsheet.insertSheet("Test");
}




3 个答案:

答案 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");

}