调用 insertCells 方法时出现“服务电子表格失败”错误

Jus*_*ham 3 google-sheets google-apps-script

这可能是一个简单的问题,但我在处理一段代码时遇到了一些问题。

这是代码:

function CreateSheet() {
    
    function toTitleCase(str) {
    return str.replace(/\w\S*/g, function (txt) {
        return txt.charAt(0)
            .toUpperCase() + txt.substr(1)
            .toLowerCase();
    });
    }
    var ss = SpreadsheetApp.getActive();
    var templatesheet = ss.getSheetByName('Template');
    //var fieldName = Browser.inputBox('Field Name', 'Insert Field Name', Browser.Buttons.OK_CANCEL);
    var ui = SpreadsheetApp.getUi();
    var fieldResult = 
        ui.prompt(
        'FIELD NAME',
        'Please type in the Field Name',
            ui.ButtonSet.OK
        )
    
    var fieldName = toTitleCase(fieldResult.getResponseText());
    var acreResult = ui.prompt('ACRES',
    'Please type in the # of acres, if the # is not known just leave it blank',
    ui.ButtonSet.OK
    )
    var acres = acreResult.getResponseText();
    var url = '';
    ss.insertSheet(fieldName,3,{template: templatesheet});
    ss.getRange('B3:D3').activate();
    ss.getCurrentCell().setValue(fieldName);
    ss.getRange('E3').activate();
    ss.getCurrentCell().setValue(acres);
    url += '#gid=';
    url += ss.getSheetId();
    ss.setActiveSheet(ss.getSheetByName('Summary'));
    SpreadsheetApp.setActiveSpreadsheet(ss);
    ss.getRange('A5:J5').activate();
    ss.getRange('A5:J5').insertCells(SpreadsheetApp.Dimension.ROWS);
Run Code Online (Sandbox Code Playgroud)

最后一行是抛出异常消息的地方:

Service Spreadsheets failed while accessing document with id..
Run Code Online (Sandbox Code Playgroud)

如果我进入工作表本身并手动插入范围“A5:J5”,然后运行代码,它将起作用。我在这里缺少什么?

zig*_*hka 5

访问带有 id 的文档时服务电子表格失败

通常是在达到电子表格的最大大小限制时获得的错误消息

  • 限制为 5 000 000 个单元格,因此您的电子表格不应该有此问题
  • 但是,有几个用户遇到了与您相同的问题,并在此处此处在 Google 的公共问题跟踪器上报告了该问题
  • 这很可能是一个错误,目前正在由谷歌调查
  • 一些用户报告说他们只在 V8 运行时遇到这个问题
  • 尝试禁用它(Run > Disable new Apps Script runtime powered by V8),希望它可以暂时解决问题
  • 否则,尝试找到替代导致错误的行的解决方法
  • 当我重现你的脚本时,它不会出错,这就是为什么我只能给你一些建议
  • 如果insertCells给您带来麻烦,请尝试insertRowAfter()或类似
  • 如果问题来自ss.getRange('A5:J5'),请尝试ss.getActiveSheet().getRange('A5:J5')ss.getSheetByName('Summary').getRange('A5:J5')
  • 另外,尝试删除该行SpreadsheetApp.setActiveSpreadsheet(ss);- 您已经ss在上面定义为活动电子表格,无需再次将其设置为活动