提问人:Ademola 提问时间:10/4/2023 最后编辑:Ademola 更新时间:10/6/2023 访问量:44
脚本未在表单提交时运行
Script not running On Form Submit
问:
我有一个脚本,每当表单响应数据表中提到关键字时,它就会创建一个时间戳。我还设置了一个触发器,以便在提交表单时运行。当我提交表单时,它显示触发器已运行并已完成,但是除非我手动运行脚本,否则它不会更新工作表。这是有原因的吗?
[触发器设置]:https://i.stack.imgur.com/pIsk8.png [执行日志]:https://i.stack.imgur.com/ivQgN.png
function onFormSubmit() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet2 = ss.getSheetByName('Data Overview');
const sheet4 = ss.getSheetByName('Dewar ID');
if(sheet2.getRange(sheet2.getLastRow(),sheet2.getLastColumn())
.getValue().toString().includes("Dewar1"))
{sheet4.getRange(3,4).setValue(new Date())};
}
答:
0赞
Cooper
10/5/2023
#1
这对我有用。
function onMyFormSubmit(e) {
Logger.log(JSON.stringify(e));// you take a look at the event object
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh0 = ss.getSheetByName('Sheet0');
const sh1 = ss.getSheetByName('Sheet1');
if (sh0.getRange(sh0.getLastRow(), sh0.getLastColumn()).getDisplayValue().includes("Dewar1")) {
sh1.getRange(3, 4).setValue(new Date()) };
}
这几乎是一回事,而且工作正常
下面是一个函数,可帮助您创建正确类型的触发器。也许您应该将函数和触发器的名称更改为您从未使用过的名称。
function createOnFormSubmitTriggerForSpreadsheet() {
const ssid=SpreadsheetApp.getActive().getId();
const resp=SpreadsheetApp.getUi().prompt("Create On Form Submit Trigger", "Enter Function Name", SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
if(resp.getSelectedButton()==SpreadsheetApp.getUi().Button.OK) {
let funcname=resp.getResponseText();
if(!isTrigger(funcname)) {
ScriptApp.newTrigger(funcname).forSpreadsheet(ssid).onFormSubmit().create();
}
}
}
评论
0赞
Ademola
10/5/2023
但是,代码可以工作,它似乎只有在我手动运行脚本时才有效。
0赞
Cooper
10/6/2023
它在 onFormSubmit 触发器上对我有用。你的触发器一定有问题。我将添加一个函数来帮助您创建 onFormSubmit 触发器。我开始怀疑您是否没有另一个 onMyFormSubmit 触发器,因为这是一个问题。所有函数都必须具有唯一的名称。
评论