通过电子表格将 google 表单同步到 Firebase
Sync google Form via Spreadsheet to Firebase
我有一个 google 形式的调查,它存储在 google sheet 中。从 google sheet 数据与 firebase 同步。
我在 google sheet 中设置了“发生更改时”触发器,因为我的答案会自动存储在那里。
问题是,当用户提交答案时,触发器不会被调用。
但是如果我直接在 google sheet 中写入,我的脚本会被调用并且数据会存储在 firebase 中。
但是当我手动执行脚本时,它也会存储在 firebase 中。
所以基本上看来 google sheet 触发器在表单本身传递数据时不会被触发。
我是否也必须为表单编写脚本?
这是我的脚本 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);
}
也许有人可以帮助我如何完全自动化此过程
使用 Apps 脚本触发器时,请务必牢记以下几点:
Script executions and API requests do not cause triggers to run. For example, calling Range.setValue()
to edit a cell does not cause the spreadsheet's onEdit
trigger to run.
使用您选择的触发器时,同样的情况适用于您的情况。
由于您希望此函数 运行 当您收到表单中的答案时 ,在这种情况下最好的方法是使用 onFormSubmit
触发器。
参考
我有一个 google 形式的调查,它存储在 google sheet 中。从 google sheet 数据与 firebase 同步。
我在 google sheet 中设置了“发生更改时”触发器,因为我的答案会自动存储在那里。 问题是,当用户提交答案时,触发器不会被调用。
但是如果我直接在 google sheet 中写入,我的脚本会被调用并且数据会存储在 firebase 中。
但是当我手动执行脚本时,它也会存储在 firebase 中。
所以基本上看来 google sheet 触发器在表单本身传递数据时不会被触发。
我是否也必须为表单编写脚本?
这是我的脚本 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);
}
也许有人可以帮助我如何完全自动化此过程
使用 Apps 脚本触发器时,请务必牢记以下几点:
Script executions and API requests do not cause triggers to run. For example, calling
Range.setValue()
to edit a cell does not cause the spreadsheet'sonEdit
trigger to run.
使用您选择的触发器时,同样的情况适用于您的情况。
由于您希望此函数 运行 当您收到表单中的答案时 ,在这种情况下最好的方法是使用 onFormSubmit
触发器。