我正在进行一个谷歌应用程序脚本项目,我的最后一行代码遇到了问题:
sheets[0].setName(sheet.getRange(i,3).getValue());
该脚本接受以电子表格"mysheet"为目标的Google Form输入,并根据该输入创建表单。如果第I列(9)中没有文本,则脚本将启动,生成一个新表单,填充第9列,并在当前工作簿中创建一个新的目标电子表格。
这一切都很好。我遇到的问题是最后一个阶段,重命名新创建的电子表格。脚本要么没有错误就死了,要么我收到了一个非描述性的服务代码错误。我基本上需要将新生成的电子表格重命名为表单的名称。我有另一张表单将进行vlookup,新表单的名称不能是随机的"表单响应#"
我在谷歌的代码系统中发现了这个错误。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());
}
}
}
我为原始表单设置了一个新的目标工作表,脚本开始与一起正常工作
sheet.setName("mySheet");
重返赛场。我猜是什么东西被损坏了,或者是测试后床单变得臃肿了。