Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取一个脚本,以便在Google工作表中按正确的顺序添加数据?_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何获取一个脚本,以便在Google工作表中按正确的顺序添加数据?

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=[

所以我想把表单中的一些日期插入到谷歌表单中。在我的.HTML文件中,我从表单中获取数据并存储在如下对象中:

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=>公式的奇怪格式。