我正在尝试将数据上传到firebase,其中我的数据库的结构是分层的。如何在Google表格中管理该结构。我一直在很多网站上寻找这个,但一无所获。 请帮忙。这是我的火力架的结构
在尝试建议的模型#2后,我无法上传重复的数据行。这是我的谷歌脚本:
var secret = 'in2HGSgx7uMtOvqhpIzUf1tPCI97cwnzGmae5Dg1'
function getFirebaseUrl(jsonPath) {
return (
'https://sheetsdemo-8d0e9.firebaseio.com/ ' +
jsonPath +
'.json?auth=' +
secret
)
}
function syncMasterSheet(excelData)
var options = {
method: 'put',
contentType: 'application/json',
payload: JSON.stringify(excelData)
}
var fireBaseUrl = getFirebaseUrl('TimeTable')
UrlFetchApp.fetch(fireBaseUrl, options)
}
function startSync() {
var sheet = SpreadsheetApp.getActiveSheet()
//Get the number of rows and columns which contain some content
var [rows, columns] = [sheet.getLastRow(), sheet.getLastColumn()]
//Get the data contained in those rows and columns as a 2 dimensional array
var data = sheet.getRange(1, 1, rows, columns).getValues()
var dataObject = {};
for (var i = 0; i < data.length; i++) {
var dataRow = data[i];
// in cell A I have my item name and in B i have my item code
var day = dataRow[0];
var section = dataRow[1];
var course_id = dataRow[2];
var time = dataRow[3];
var course_title = dataRow[4];
var teacher = dataRow[5];
// we then create our first property on our data object dataObject.code- name : { }
dataObject[section + day] = {
day: day,
section: section,
course_id: course_id,
time: time,
course_title: course_title,
teacher: teacher
};
syncMasterSheet(dataObject)
}
}
我知道有两种模型用于在表格/电子表格中存储分层数据:
这是您向表格显示的内容的最直接映射:
1 2 3 4 5 6
A TIME TITLE TEACHER
B Monday
C FA16....
D COURSE1 11:00 CCN OWAIS
E COURSE2 11:30 CG MAM
这样做的一个优点是它在视觉上很容易阅读。但缺点是,如果您的数据不是完全同质的话,列标题很容易摆脱打击。
在此模型中,您将展平/标准化数据:
1 2 3 4 5 6
A DAY CODE1 COURSEID TIME TITLE TEACHER
B Monday FA16.... COURSE1 11:00 CCN OWAIS
C Monday FA16.... COURSE2 11:30 CG MAM
这与您在关系数据库中存储数据的方式非常相似。毕竟:行是行,无论你存储什么表格结构。
如果可以嵌套课程,则可以添加ParentID列以保存对父课程的引用。