簡體   English   中英

如何獲取腳本以在 Google 表格中以正確的順序附加數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM