我正在将apps脚本用作Webhook,应该用来捕获信息并将其存储在BigQuery中。我以前可以使用appendRow
将数据存储在工作表中,但是由于数据量越来越大,因此我不得不寻找替代方法,因此决定使用BigQuery进行存储。
[当我使用标准SQL查询通过BigQuery控制台插入/更新数据时,它可以完美运行,但在使用应用程序脚本时效果不佳。
这是我的doGet
函数,应该捕获数据并运行BigQuery.Jobs.query
,但是它失败了,并且没有更新表-
var projectId = 'MyProjectID';
var datasetId = 'MyDatasetID';
var tableId = 'MyTableID';
function doGet(e) {
var params = JSON.stringify(e.parameters);
var jsonMapping = JSON.parse(params)
var email = jsonMapping["email"][0]
var number = jsonMapping["number"][0]
var request = {
'query': "INSERT INTO `" + projectId + "."+ datasetId + "." + tableId + "` VALUES ('" + email + "','" + number + "')"
}
var queryResults = BigQuery.Jobs.query(request, projectId);
var jobId = queryResults.jobReference.jobId;
return ContentService.createTextOutput('Successful')
}
有人可以告诉我我做错了什么吗?由于截断而无法看到完整的错误,并且在下一次运行时弹出窗口完全消失:(
您需要将useLegacySql
设置为false。对此可以找到更多的见解here
尝试一下-
var projectId = 'MyProjectID';
var datasetId = 'MyDatasetID';
var tableId = 'MyTableID';
function doGet(e) {
var params = JSON.stringify(e.parameters);
var jsonMapping = JSON.parse(params)
var email = jsonMapping["email"][0]
var number = jsonMapping["number"][0]
var request = {
'query': "INSERT INTO `" + projectId + "."+ datasetId + "." + tableId + "` VALUES ('" + email + "','" + number + "')",
'useLegacySql': false
}
var queryResults = BigQuery.Jobs.query(request, projectId);
var jobId = queryResults.jobReference.jobId;
return ContentService.createTextOutput('Successful')
}