【发布时间】:2016-01-12 01:30:57
【问题描述】:
我有以下代码,我将其与“FireBaseApp 库资源”一起使用来更新 FireBase。
function writeDataToFirebase() {
var ss = SpreadsheetApp.openById(".......mySheetRef.........");
var sheet = ss.getSheets()[0];
var data = sheet.getDataRange().getValues();
var dataToImport = {};
for(var i = 1; i < data.length; i++) {
var EventName = data[i][0];
var Description = data[i][1];
dataToImport[EventName] = {
EventName:EventName,
Description:Description,
EmailAddress:data[i][2],
who:data[i][4],
client:data[i][5],
partners:data[i][6],
EventDate:data[i][7]
};
}
var firebaseUrl = "https://myFireBase.firebaseio.com/";
var secret = "secret_here";
var base = FirebaseApp.getDatabaseByUrl(firebaseUrl, secret);
base.setData("", dataToImport);
}
一切正常,除了...
为了增加项目的可扩展性,我想动态地从第 1 行列标题中添加键“名称”。因此,如果列名更改或添加了更多列,则无需每次都重新编写脚本。
所以,而不是硬编码...
EmailAddress:data[i][2],
I would like
"row 1 column header value":data[i][2],
我似乎无法做到这一点:-(
非常感谢任何帮助。
更新: 我已经尝试添加....
-> var Headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
Logger.log(Headers);
var dataToImport = {};
for(var i = 1; i < data.length; i++) {
var EventName = data[i][0];
var Description = data[i][1];
dataToImport[EventName] = {
EventName:EventName,
Description:Description,
-> Headers[2]:data[i][2],
who:data[i][4],
client:data[i][5],
partners:data[i][6],
EventDate:data[i][7]
};
}
但这会产生一个“缺少:属性 ID 之后。”错误!
所以我仍在寻找一种动态捕获列标题值的方法。
【问题讨论】:
标签: json google-apps-script google-sheets firebase