Javascript 如何获取一个脚本,以便在Google工作表中按正确的顺序添加数据?
所以我想把表单中的一些日期插入到谷歌表单中。在我的.HTML文件中,我从表单中获取数据并存储在如下对象中:Javascript 如何获取一个脚本,以便在Google工作表中按正确的顺序添加数据?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,所以我想把表单中的一些日期插入到谷歌表单中。在我的.HTML文件中,我从表单中获取数据并存储在如下对象中: var数据={ 名称:nameInput.value, 公司:“无”, 电子邮件:emailInput.value, 日期:dateInput.value }; 然后我有一个函数,它实际附加了数据: 函数追加数据(数据){ var ws=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“数据”); var dataArray=[
var数据={
名称:nameInput.value,
公司:“无”,
电子邮件:emailInput.value,
日期:dateInput.value
};
然后我有一个函数,它实际附加了数据:
函数追加数据(数据){
var ws=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“数据”);
var dataArray=[];
用于(数据中的var i){
push(数据[i]);
}
appendRow(数据数组);
}
我希望按照在对象中收集数据的相同顺序(名称、公司、电子邮件、日期)插入数据,但当我使用
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());
}
可能这就是这个物体是如何被创造出来的-按照这个顺序。当气体中有object.values选项时,复制和罪恶?我不确定它是什么时候被引入的。但是由于谷歌脚本支持ECMA6,所以你可以做JS所做的一切@雷姆:谢谢。自动填充没有显示它,所以我认为这是无法完成的。。。如果我两周前就知道了:)顺便说一句。。您是否注意到array=>公式的奇怪格式。