Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可以异步使用googlesheets函数吗?_Javascript_Asynchronous_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 可以异步使用googlesheets函数吗?

Javascript 可以异步使用googlesheets函数吗?,javascript,asynchronous,google-apps-script,google-sheets,Javascript,Asynchronous,Google Apps Script,Google Sheets,我目前的问题是,许多人访问一个表(Google Sheet),因此可能会发生两个人同时更改一个值的情况。是否有可能对事件进行异步编程 一种可选的可能性是,如果脚本没有完全执行,那么表将为其他参与者锁定 function onEdit(e){ } 例如,下面两个示例情况如何解释OnEdit simple trigger的工作 示例情形1: onEdit的工作时间为5秒。示例脚本如下所示 function onEdit(e) { Utilities.sleep(5000); e.sou

我目前的问题是,许多人访问一个表(Google Sheet),因此可能会发生两个人同时更改一个值的情况。是否有可能对事件进行异步编程

一种可选的可能性是,如果脚本没有完全执行,那么表将为其他参与者锁定

function onEdit(e){ 

}

例如,下面两个示例情况如何解释OnEdit simple trigger的工作

示例情形1:
onEdit
的工作时间为5秒。示例脚本如下所示

function onEdit(e) {
  Utilities.sleep(5000);
  e.source.appendRow([new Date()]);
}
  • 当两个用户同时编辑单元格时,这两个时间戳的平均差值约为1秒。从这个结果可以看出,
    onEdit
    的功能是通过异步进程运行的
示例情形2:
onEdit
的工作时间为5秒。示例脚本如下所示。在此示例中,使用了LockService

function onEdit(e) {
  var lock = LockService.getDocumentLock();
  if (lock.tryLock(10000)) {
    try {
      Utilities.sleep(5000);
      e.source.appendRow([new Date()]);
    } catch(e) {
      throw new Error(e);
    } finally {
      lock.releaseLock();
    }
  }
}
  • 当两个用户同时编辑单元格时,两个时间戳的平均差值约为5秒。根据该结果,通过使用LockService,可以认为
    onEdit
    的功能与同步进程一起运行
注:
  • 与事件触发器的其他报告一样,还有一个关于“使用事件触发器进行异步处理”的报告
参考资料:

例如,下面两个示例情况如何解释OnEdit simple trigger的工作

示例情形1:
onEdit
的工作时间为5秒。示例脚本如下所示

function onEdit(e) {
  Utilities.sleep(5000);
  e.source.appendRow([new Date()]);
}
  • 当两个用户同时编辑单元格时,这两个时间戳的平均差值约为1秒。从这个结果可以看出,
    onEdit
    的功能是通过异步进程运行的
示例情形2:
onEdit
的工作时间为5秒。示例脚本如下所示。在此示例中,使用了LockService

function onEdit(e) {
  var lock = LockService.getDocumentLock();
  if (lock.tryLock(10000)) {
    try {
      Utilities.sleep(5000);
      e.source.appendRow([new Date()]);
    } catch(e) {
      throw new Error(e);
    } finally {
      lock.releaseLock();
    }
  }
}
  • 当两个用户同时编辑单元格时,两个时间戳的平均差值约为5秒。根据该结果,通过使用LockService,可以认为
    onEdit
    的功能与同步进程一起运行
注:
  • 与事件触发器的其他报告一样,还有一个关于“使用事件触发器进行异步处理”的报告
参考资料:

虽然我不确定是否能正确理解您期望的答案,但我还是提出了一个答案。你能确认一下吗?如果我误解了你的问题,而这不是你期望的方向,我道歉。这是否回答了你的问题?虽然我不确定我是否能正确理解你期望的答案,但我提出了一个答案。你能确认一下吗?如果我误解了你的问题,而这不是你期望的方向,我道歉。这是否回答了你的问题?