[英]How to get a script to append the data in the right order in Google Sheets?
所以我試圖從表單中插入一些日期到 Google 表格中。 在我的 .HTML 文件中,我從表單中獲取數據並存儲在一個對象中,例如:
var data = {
name: nameInput.value,
company: "None",
email: emailInput.value,
date: dateInput.value
};
然后我有一個實際附加數據的函數:
function appendData(data) {
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
var dataArray = [];
for (var i in data){
dataArray.push(data[i]);
}
ws.appendRow(dataArray);
}
我想按照在對象中收集的順序(姓名、公司、電子郵件、日期)插入數據,但是當我使用appedData
函數時,我得到了相反的結果(日期、電子郵件、公司、名稱)。 如果我使用Object.values(data)
發生同樣的情況。 它正常工作的唯一方法是,如果我手動將其附加為ws.append([data.name, data.company, data.email, data.date])
。 為什么會這樣?
JSON 對象沒有特定的順序,並且不能保證保持你放置的順序。如果你想要一個有序的鍵,你應該把它們放在一個數組中,以保持順序。
JSON 對象不會保留您放入的元素的順序。如果您希望元素按順序排列,則應將它們放入數組中。
var data = [
{name: nameInput.value},
{company: "None"},
{email:emailInput.value},
{date: dateInput.value}
]
解決方案:
function appendData() {
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
var dataArray = [];
var data = [
{name: nameInput.value},
{company: "None"},
{email:emailInput.value},
{date: dateInput.value}
]
for (var i in data){
dataArray.push(Object.values(data[i]));
}
ws.appendRow(dataArray.flat());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.