google-apps-script - onSubmit 触发器:表单的 GetEditResponseUrl 有时执行失败
问题描述
我希望用户能够从此 Google 表单中编辑他们的回复,因此我想将编辑回复网址放在回复表的第 14 列。
我设置了一个触发器,onSubmit。每次用户提交表单时,此函数都会运行。问题是,有时它会起作用并将编辑 URL 设置在第 14 列。但有时它会抛出一个错误:无法调用未定义的方法“getEditResponseUrl”。
意思是:“var rs = f.getResponses(timeStamp)[0];” 在时间戳之后无法获得响应。
我认为这与在 Google 端获取时间戳和延迟有关。我觉得,该函数从(e)获取时间戳,但在该时间戳之后看不到任何响应。
function onSubmit(e){
var rng = e.range; //Collects active range for event
var ss = SpreadsheetApp.getActiveSpreadsheet();//collects active spreadsheet object
var fUrl = ss.getFormUrl();//gets form url linked with active spreadsheet
var f = FormApp.openByUrl(fUrl);//opens form using form url
var timeStamp = new Date(e.namedValues.Timestamp[0]);//gets the timestamp of the form response
var rs = f.getResponses(timeStamp)[0]; //gets the first response after the
var row = e.range.getRow();
var sheet = ss.getSheetByName("All"); // responses sheet
sheet.getRange(row, 14).setValue(rs.getEditResponseUrl());
}
解决方案
这对我有用。不完全确定为什么这种方法有效而其他方法无效。也许是因为我直接从工作表中获取时间戳,所以它没有关闭 1 秒。以前,通过使用 e 对象,时间戳将关闭一秒钟。
提交触发器:
function onSubmit(e){
editBillingFormURLEncoded(e.range.getRow()); //pass in row to function
}
function editBillingFormURLEncoded(row){
var ss = SpreadsheetApp.openById(SheetID).getSheets()[0]; //Open First Sheet in Spreadsheet
var vals = ss.getRange(row,1,1,15).getValues();
var timeStamp = vals[0][0]; //first value of sheet is the timestamp
var googleFormUrl = ss.getFormUrl(); //get form linked to the spreadsheet
var googleForm = FormApp.openByUrl(googleFormUrl); //FormApp
try{
var formResponse = googleForm.getResponses(timeStamp)[0]; //get last response after timestamp
var responseUrl = formResponse.getEditResponseUrl(); //get the edit form URL
ss.getRange(row, 14).setValue(responseUrl); //setting the responseURL Value on 14th column of sheet
}
catch(error){
ss.getRange(row, 14).setValue("Failed");
}
}
推荐阅读
- javascript - 使用 $route.path 加载背景图像在页面加载时间方面的表现如何
- android - 以编程方式在 android studio 中生成 JAVA/KOTLIN 类
- typescript - 打字稿功能扩展被破坏
- python - 没有循环或列表理解的元组中的 Numpy 访问元素
- r - 如何从 lme4 中提取公式的随机效应部分
- python - 如何将 Python 代码编译成共享库以在 C# 应用程序(如 Unity)中使用?
- .net - Travis CI:面向 .NET Core、.NET Framework 和 .NET Standard
- javascript - 如何设置等于窗口 URL 的变量?
- c - 我制作了两个代码,但我无法解释为什么这两个代码不同并产生不同的结果
- python - 熊猫合并确实错过了价值;匹配行