我被迫填写表格两次以执行 2 个功能。建议一键执行 2 个功能?
I'm forced to fill up form twice to execute 2 functions. Suggestions to execute 2 functions in 1 click?
关于: 我为我们的货运公司制作了一个用于跟踪包裹的网络应用程序。数据库在 Google Sheets 上,有两个 sheet 名为“Tracker”和“Program”的文件可以自动跟踪包裹。
进程:
- 在网络应用程序上,我输入了跟踪号
- 点击后,它会发送到 Tracker sheet
- 程序 sheet 从 Tracker sheet 获取跟踪号,并花费 2-3 秒来获取数据
- 来自程序sheet的数据(只有1行数据——只有相关数据)被发送回网络应用程序供客户端查看
我的问题: 我必须提交两次表格才能成功执行上面的第 4 步。我尝试将两个功能(第 2 步和第 4 步)放入一个按钮中,但只单击一次会说找不到跟踪号。在我的流程的第 3 步之后,是否有自动填写表格并再次单击按钮(提交两次)的功能?或者有什么建议吗?
我尝试了什么:
所有这些都不起作用(它们都返回空白)。我已将它们全部放在第 2 步和第 4 步的两个函数之间
- SpreadsheetApp.flush();
- Utilities.sleep(3000)
- LockService.getScriptLock(); lock.waitLock();
相关代码和链接:
Google Script | Google Sheet
样本跟踪号码: 11424 和 11426(因此您可以尝试在网络应用程序中更改它以查看我的问题所在。请确保打开上面的两个链接以查看更改并提交在网络应用程序上形成两次)
// Process STEP 2
function sendTracking(formObject) {
google.script.run.processForm(formObject);
document.getElementById("myForm");
}
// Process STEP 4
function trackingInfo(formObject) {
google.script.run.withSuccessHandler(createTable).processReturnForm(formObject);
document.getElementById("myForm").reset();
}
// COMBINED: Process STEP 2 & 4
function handleFormSubmit(formObject) {
sendTracking(formObject); // THIS IS STEP 2
// IN BETWEEN HERE is where I put the codes I listed above that did not work
trackingInfo(formObject); // THIS IS STEP 4
}
google.script.run is an asynchronous client-side JavaScript API
无法保证 sendTracking
(第 2 步)和 handleFormSubmit
(第 4 步)的顺序。
function handleFormSubmit(formObject) {
sendTracking(formObject);
function sendTracking(formObject) {
google.script.run.withSuccessHandler(trackingInfo).processForm(formObject);
}
function trackingInfo(formObject) {
google.script.run.withSuccessHandler(createTable).processReturnForm(formObject);
}
function createTable(formObject) {
/* ... */
document.getElementById("myForm").reset();
}
}
参考:
关于: 我为我们的货运公司制作了一个用于跟踪包裹的网络应用程序。数据库在 Google Sheets 上,有两个 sheet 名为“Tracker”和“Program”的文件可以自动跟踪包裹。
进程:
- 在网络应用程序上,我输入了跟踪号
- 点击后,它会发送到 Tracker sheet
- 程序 sheet 从 Tracker sheet 获取跟踪号,并花费 2-3 秒来获取数据
- 来自程序sheet的数据(只有1行数据——只有相关数据)被发送回网络应用程序供客户端查看
我的问题: 我必须提交两次表格才能成功执行上面的第 4 步。我尝试将两个功能(第 2 步和第 4 步)放入一个按钮中,但只单击一次会说找不到跟踪号。在我的流程的第 3 步之后,是否有自动填写表格并再次单击按钮(提交两次)的功能?或者有什么建议吗?
我尝试了什么: 所有这些都不起作用(它们都返回空白)。我已将它们全部放在第 2 步和第 4 步的两个函数之间
- SpreadsheetApp.flush();
- Utilities.sleep(3000)
- LockService.getScriptLock(); lock.waitLock();
相关代码和链接:
Google Script | Google Sheet
样本跟踪号码: 11424 和 11426(因此您可以尝试在网络应用程序中更改它以查看我的问题所在。请确保打开上面的两个链接以查看更改并提交在网络应用程序上形成两次)
// Process STEP 2
function sendTracking(formObject) {
google.script.run.processForm(formObject);
document.getElementById("myForm");
}
// Process STEP 4
function trackingInfo(formObject) {
google.script.run.withSuccessHandler(createTable).processReturnForm(formObject);
document.getElementById("myForm").reset();
}
// COMBINED: Process STEP 2 & 4
function handleFormSubmit(formObject) {
sendTracking(formObject); // THIS IS STEP 2
// IN BETWEEN HERE is where I put the codes I listed above that did not work
trackingInfo(formObject); // THIS IS STEP 4
}
google.script.run is an asynchronous client-side JavaScript API
无法保证 sendTracking
(第 2 步)和 handleFormSubmit
(第 4 步)的顺序。
function handleFormSubmit(formObject) {
sendTracking(formObject);
function sendTracking(formObject) {
google.script.run.withSuccessHandler(trackingInfo).processForm(formObject);
}
function trackingInfo(formObject) {
google.script.run.withSuccessHandler(createTable).processReturnForm(formObject);
}
function createTable(formObject) {
/* ... */
document.getElementById("myForm").reset();
}
}
参考: