我有一个函数BigQueryGetEmail()
,该函数可以从BigQuery查询请求者管理器信息。我调用代码以获取信息并将其传递给变量。但是问题在于,因为JS是单线程语言,所以我认为它在完成查询所需信息之前会跳过我调用BigQueryGetEmail()
函数的代码。效果是,当我将其分配给变量时,确定它会返回错误,因为还没有数据。
我试图将变量赋值放在BigQueryGetEmail()
的回调中,但仍然没有时间捕获数据。还尝试了异步功能,但在AppMaker上似乎不起作用。测试时,查询功能按预期方式工作。它返回请求者经理的电子邮件。
//run Query to get Manager email info base on requester email
var email = google.script.run.BigQueryGetEmail(emailRequester);
//assign email value to draft.email;
draft.Email = email;
//create record
createDatasource.createItem(function(createdRecord) { });
我希望查询将首先获取请求者管理者的电子邮件地址,然后在保存记录之前将值首先传递给draft.Email
。
答案 0 :(得分:0)
客户端api google.script.run 具有故障处理程序和成功处理程序。要了解有关其工作原理的更多信息,请参阅official documentation。
基本上,您需要重新组织代码,使其看起来像这样:
function successHandler(email){
//assign email value to draft.email;
draft.Email = email;
//create record
createDatasource.createItem(function(createdRecord) { });
}
function failureHandler(error){
console.log(error);
}
//run Query to get Manager email info base on requester email
google.script.run.withSuccessHandler(successHandler).withFailureHandler(failureHandler).BigQueryGetEmail(emailRequester);