【发布时间】:2021-01-21 18:11:58
【问题描述】:
我有一个谷歌表单中的调查,该表单存储在谷歌表格中。从 google sheet 数据与 firebase 同步。
我在谷歌表中设置了“发生更改时”的触发器,因为我的答案会自动存储在那里。 问题是,当用户提交答案时,触发器没有被调用。
但如果我直接在 google sheet 中写入,我的脚本会被调用,数据会存储在 firebase 中。
但是当我手动执行我的脚本时,它也会存储在 firebase 中。
因此,当表单本身传递数据时,基本上似乎不会触发 google sheet 触发器。
我也必须为表单编写脚本吗?
这是我的工作表脚本:
function writeDataToFirebase() {
var ss = SpreadsheetApp.openById("SpreadsheetID");
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange().getValues();
var dataToImport = {};
for(var i = 1; i < data.length; i++) {
var timeStamp = data[i][0];
var uuid = data[i][62];
dataToImport[timeStamp] = {
timeStamp:timeStamp,
uuid:uuid,
a:data[i][1],
b:data[i][2],
c:data[i][3],
d:data[i][4],
e:data[i][5],
f:data[i][6],
g:data[i][7],
var1:data[i][8],
var2:data[i][9],
var3:data[i][10],
var4:data[i][11],
var5:data[i][12],
var6:data[i][13],
var7:data[i][14],
var8:data[i][15],
var9:data[i][16]
};
}
var firebaseUrl = "URL" ;
var secret = "Secret
var base = FirebaseApp.getDatabaseByUrl(firebaseUrl, secret);
base.setData("", dataToImport);
}
也许有人可以帮助我如何完全自动化这个过程
【问题讨论】:
-
问题是所有检测到某种变化的触发器只响应用户的变化。因此,您将不得不从 onFormSubmit 触发器函数进行数据传输。并且所有数据都可以轻松地在电子表格 onFormSubmit 触发器的事件对象中获得
-
只要确保将参数(我使用 e)添加到函数中,如下所示:
function onFormSubmit(e){Logger.log(JSON.stringify(e));并添加 Logger.log,这样您就可以直接看到其中的值事件对象。你也可以看到其中一些here -
谢谢库珀!实际上将触发器更改为表单提交解决了它....有时最好不仅像在教程中那样直截了当,而且实际上阅读得更好;)可以避免我几个小时的弄清楚。谢谢!
标签: firebase google-apps-script google-sheets google-sheets-api google-forms