使用 withSuccessHandler() 将数据写入电子表格后如何调用另一个服务器端函数 - Google Apps 脚本?

问题描述 投票:0回答:1

流程基本上如下:

  1. 函数
    addTaskToDb()
    将 HTML 表单数据写入电子表格(例如任务 3);
  2. google.script.run.withSuccessHandler(_ => loadClientTasks(selectedClient)).newTask(task);
    会将更新的任务加载到活动 HTML 页面上(例如任务:1、2 和 3);
  3. google.script.run.updateFilesWithTask('new', selectedAgency, selectedClient, task);
    应该获取添加到电子表格中的最后一个任务并将其复制到其他文件中(应该选择任务 3,但它正在获取任务 2)。它从那里获取它,因为该任务应用了编号。
function addTaskToDb() {
  var formElements = document.getElementById("form").elements;
  var postData = [];
  for (var i = 0; i < formElements.length; i++) {//Converts checkboxes' status to sheets
    if (formElements[i].type != "submit" && formElements[i].type != 'checkbox') {
      postData.push(formElements[i].value);
    } else if (formElements[i].type == 'checkbox' && formElements[i].checked == true) {
      postData.push(formElements[i].checked);
    } else if (formElements[i].type == 'checkbox' && !formElements[i].checked) {
      postData.push('false');
    }
  }
  let timeStamp = new Date();
  timeStamp = timeStamp.toString();
  const agencyPartner = document.getElementById('agencySelect');
  const selectedAgency = agencyPartner.options[agencyPartner.selectedIndex].text;

  const client = document.getElementById('clientSelect');
  const selectedClient = client.options[client.selectedIndex].text;
  
  let dateAssigned = postData[1].toString();
  const item = postData[0];
  const link = postData[2];
  const notes = postData[3];
  const requestApproval = postData[4];

  let task = [];
  task.push(timeStamp, selectedAgency, selectedClient, '', '', dateAssigned, item, link, notes, '', requestApproval, '', '', '')
  google.script.run.withSuccessHandler(_ => loadClientTasks(selectedClient)).newTask(task);
  google.script.run.updateFilesWithTask('new', selectedAgency, selectedClient, task);
  document.getElementById("form").reset();
}

我尝试在

Utilities.sleep(3000);
中使用
updateFilesWithTask()
,但没有成功。

google-apps-script
1个回答
1
投票

你尝试过吗:

google.script.run.withSuccessHandler(_ => { loadClientTasks(selectedClient);
    google.script.run.updateFilesWithTask('new', selectedAgency, selectedClient, task);  
  }
).newTask(task);
© www.soinside.com 2019 - 2024. All rights reserved.