【发布时间】:2015-03-30 16:27:22
【问题描述】:
我创建了一个链接到包含两个工作表的 Google 电子表格的 Google 表单。我还在 Google Scripts 中创建了一个名为“handleFormSubmission”的函数,当触发时(在提交链接表单时):
从第一张表创建一个包含此提交值的变量:
var s0Row = s0.getRange("A"+(s0Last)+":J"+(s0Last)).getValues();然后,如果两个工作表上都满足匹配的 ID 条件,则将工作表一中的这些值设置到工作表二上的适当范围内:
s1Row.setValues(s0Row);
可能有更好的方法来做到这一点,但现在从 Google Scripts 运行该函数可以正常工作,并且表单正在将提交返回到第一张表。
我遇到的问题是在提交链接表单时触发此功能。正如您将在下面的屏幕截图中看到的那样,我已尝试设置此触发器。
代码
function handleFormSubmission() {
var ss = SpreadsheetApp.openById("1FmArzo50IV2Wmykgsa89l_EARjzkiyeFDoPaCjGyBZM");
SpreadsheetApp.setActiveSpreadsheet(ss);
var sheet = SpreadsheetApp.getActive();
var s0 = sheet.getSheets()[0];
var s0Last = s0.getLastRow();
var s1 = sheet.getSheets()[1];
var s1Last = s1.getLastRow();
var s0Bid = s0.getRange(s0Last, 10).getValue();
var s0Row = s0.getRange("A"+(s0Last)+":J"+(s0Last)).getValues();
for (var i = 2; i < s1Last + 1; i++) {
var s1Bid = s1.getRange(i, 10).getValue();
var s1First = s1.getRange(i, 2).getValue();
var s1LastName = s1.getRange(i, 3).getValue();
var s1Row = s1.getRange("A"+(i)+":J"+(i));
if (s0Bid === s1Bid) {
Logger.log(i + " " + s1First + s1LastName);
Logger.log("s0: " + s0Bid);
Logger.log("s1: " + s1Bid);
Logger.log("Match!");
s1Row.setValues(s0Row);
Logger.log("----------------------");
break;
} else {
Logger.log(i + " " + s1First + s1LastName);
Logger.log("s0: " + s0Bid);
Logger.log("s1: " + s1Bid);
Logger.log("Nope...");
Logger.log("----------------------");
}
};
};`
当前项目的触发器
【问题讨论】:
-
我认为事件应该是“来自表单”而不是“来自电子表格”。尝试改变它,它的工作原理。希望有帮助!
-
感谢 KRR,但“来自电子表格”是唯一的选择。
-
那是因为您正在使用从电子表格打开的脚本编辑器。当您从表单打开脚本编辑器并在该编辑器中编写函数时,它会填充。
-
KRR,这就是问题所在。谢谢。
标签: javascript google-apps-script google-sheets google-forms eventtrigger