如何让 Google 脚本在两个函数之间等待 3 秒? 2 个功能在 1 个按钮中

How to make Google Script wait 3 seconds between two functions? The 2 functions are in 1 button

关于:我做了一个Google Script Web App for tracking packages for our freight company. The database is on Google Sheets,有两个sheets,分别命名为“Tracker”和“Program”来自动跟踪包裹。

进程:

  1. 在网络应用程序上,我输入了跟踪号
  2. 点击后,它会发送到 Tracker sheet
  3. 程序 sheetTracker sheet 获取跟踪号,并花费 2-3 秒获取数据
  4. 来自程序sheet的数据(只有1行数据——只有相关数据)被发送回网络应用程序供客户端查看

我的问题: 我需要通过单击 1 个按钮来执行步骤 2 和 4。现在,如果我填两次表格就可以了(这对客户来说很麻烦)。

问题: 有没有办法让我先执行第 2 步,然后 Google 脚本在执行第 4 步之前等待 3 秒?只需单击 1 次按钮

// STEP 2 where tracking number gets sent to Sheets
function sendTracking(formObject) {
  google.script.run.processForm(formObject);
  document.getElementById("myForm");
}

// STEP 4 where tracking status is returned from Sheets to Web App
function trackingInfo(formObject) {
  google.script.run.withSuccessHandler(createTable).processReturnForm(formObject);
  document.getElementById("myForm").reset();
}

我尝试了什么: 所有这些都返回空白——我已将它们全部放在第 2 步和第 4 步的两个函数之间。我不确定是我输入错误还是它们真的不适用于我的函数。


// COMBINED: Process STEP 2 & 4
function handleFormSubmit(formObject) {
  sendTracking(formObject); // THIS IS STEP 2
  // codes above inserted here
  trackingInfo(formObject); // THIS IS STEP 4
}

其他相关代码:

第二步背后的代码:

function processForm(formObject) {
  var url = "URL";
  var ss = SpreadsheetApp.openByUrl(url);
  var ws = ss.getSheetByName("Tracker");

ws.getRange('D3').setValue(formObject.trackingNumber);
}

步骤4背后的代码:

function processReturnForm(formObject){  
  var result = "";
  if(formObject.trackingNumber){//Execute if form passes search text
  result = search(formObject.trackingNumber);
  }
return result;
}

将其放在 processForm 的末尾或 SuccessHandler 的开头。

正如我在您之前的问题中所回答的那样。您的代码中无法确保执行顺序。请先解决这个问题。

Utilities.sleep(3000);

参考:

sleep(milliseconds)