Chi*_*pta 2 triggers exception google-apps-script async-await google-forms
我最近经常收到此错误,因为我的客户认为这是我这边的错误,但它是 Google 那边的问题。
const respondentEmail = e.response.getRespondentEmail();,这是给我一个错误的地方,有人可以帮助我解决这个问题,因为我在互联网上找不到任何问题
async function onFormSubmit(e) {
Logger.log("Inside On Form Submit");
const form = FormApp.getActiveForm();
let latestFormResponse;
const formResponses = form.getResponses();
const respondentEmail = e.response.getRespondentEmail();
if (respondentEmail === "") return false
///.. other code
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?由于这个错误,我失去了客户:(
假设问题是间歇性的,您可以使用指数退避重试有问题的调用。替换这一行:
const respondentEmail = e.response.getRespondentEmail();
Run Code Online (Sandbox Code Playgroud)
...和:
let respondentEmail;
try {
respondentEmail = exponentialBackoff_(() => e.response.getRespondentEmail());
} catch (error) {
console.log(error.message);
respondentEmail = '';
}
Run Code Online (Sandbox Code Playgroud)
这是一个简单的exponentialBackoff_()实现:
/**
* Calls a closure, retries on failure, and returns the value it gives.
*
* Usage:
* exponentialBackoff_(myFunction);
* // ...or:
* exponentialBackoff_(() => myFunction(param1, param2));
* // ...or:
* const result = exponentialBackoff_(() => myFunction(param1, param2));
* // ...or:
* const respondentEmail = exponentialBackoff_(() => e.response.getRespondentEmail());
*
* @see https://en.wikipedia.org/wiki/Exponential_backoff
* @param {Function} action The closure to call.
* @param {Number} maxNumTries Optional. The number of times to retry. Defaults to 5.
* @return {Object} The closure return value.
*/
function exponentialBackoff_(action, maxNumTries = 5) {
// version 1.0, written by --Hyde, 29 December 2022
// - see https://stackoverflow.com/a/74952372/13045193
for (let tryNumber = 1; tryNumber <= maxNumTries; tryNumber++) {
try {
return action();
} catch (error) {
if (tryNumber >= maxNumTries) {
throw error;
}
Utilities.sleep(2 ** (tryNumber - 1) * 1000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4005 次 |
| 最近记录: |