Google Apps脚本电子表格重命名错误

时间:2016-05-10 18:16:49

标签: google-apps-script

我正在开发Google Apps脚本项目,但我的最后一行代码遇到了问题:

sheets[0].setName(sheet.getRange(i,3).getValue());

该脚本将Google表单输入定位到电子表格" mysheet"并从该输入创建表单。如果列I(9)中没有文本,则脚本将触发,构建新表单,填写第9列,并在当前工作簿中创建新的目标电子表格。

这一切都运作良好。我遇到的问题是最后一个阶段,重命名创建的新创建的电子表格。脚本死亡没有错误或我收到非描述性服务代码错误。我基本上需要新生成的电子表格来重命名为表单的名称。我有另一张可以进行vlookup的工作表,新工作表的名称不能是随机的"表格回复#"

我在Google的代码系统中发现了这个错误。 https://code.google.com/p/google-apps-script-issues/issues/detail?id=5537

无论如何,这对我来说描述了正在发生的事情。在项目的早期,错误导致位置1的工作表重命名,因为系统认为它是0.我不确定为什么不再发生这种情况。我必须改变一些东西,但脚本编辑器只能回溯大约十几个版本,所以我无法跟踪它。

我想如果我强制在表格上重置名称" mySheet":

sheet.setName("mySheet");

它可能会奏效。它确实如此。从那时起,我添加了更多的代码(下面是骨架版本),并且工作不再有效。我已经将我的代码再次删掉,看看它是否是我添加的内容,但它似乎仍然无法正常工作。我也尝试过设置不同的工作表作为活动工作表,但这似乎也不起作用。

有没有人有任何建议?提前感谢您的想法。

function myFunction() {
  var ss = SpreadsheetApp.openById('1gg8FTt_3_Ude5qEmpqlvjZdQocXbYzOKJrgGeLC3cMc');
  var sheet = ss.getSheetByName("mySheet");
  var range = sheet.getRange("A1:I7");
  for (var i = 1; i <= range.getNumRows(); i++) {
      var cell = sheet.getRange(i,9).getValue();
      if(cell == ''){
        var form = FormApp.create(sheet.getRange(i,3).getValue());
        var linktoliveform = form.getPublishedUrl();
        var contentsforcell = '=HYPERLINK("' + linktoliveform + '","' + sheet.getRange(i,3).getValue() + '")';
        sheet.getRange(i,9).setValue(contentsforcell);
        form.setCollectEmail(true);
        form.setDescription(sheet.getRange(i,4).getValue());
        var item = form.addParagraphTextItem();
        item.setTitle(sheet.getRange(i,5).getValue());
        form.setDestination(FormApp.DestinationType.SPREADSHEET,'1gg8FTt_3_Ude5qEmpqlvjZdQocXbYzOKJrgGeLC3cMc');
        //sheet.setName("mySheet"); //reset name on mySheet sheet to force sheets/getsheets list to renumerate. https://code.google.com/p/google-apps-script-issues/issues/detail?id=5537
        var sheets = ss.getSheets();
        sheets[0].setName(sheet.getRange(i,3).getValue());            
        }
      }
  }

1 个答案:

答案 0 :(得分:0)

我为原始表单设置了一个新的目标表,并且脚本开始使用

再次正常工作
sheet.setName("mySheet");

回到比赛中。我的猜测是某些东西已经损坏,或者表单已经因测试而变得臃肿。