Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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_Arrow Functions - Fatal编程技术网

Javascript 如何从Google工作表中的列值分配对象?

Javascript 如何从Google工作表中的列值分配对象?,javascript,google-apps-script,google-sheets,arrow-functions,Javascript,Google Apps Script,Google Sheets,Arrow Functions,我有一个谷歌表格,在一列中有一些数据。 如何将这些值分配给新对象,如{'value[0]':value[0],'value[1]':value[1],…,'value[i]':value[i]} 我编写了这个脚本,但它仅从名称的最后一个值中分配pair: function getIngredientsList() { const url = "SPREADSHEET_URL"; const ss = SpreadsheetApp.openByUrl(url); c

我有一个谷歌表格,在一列中有一些数据。 如何将这些值分配给新对象,如
{'value[0]':value[0],'value[1]':value[1],…,'value[i]':value[i]}

我编写了这个脚本,但它仅从
名称的最后一个值中分配pair:

function getIngredientsList() {
  const url = "SPREADSHEET_URL";
  const ss = SpreadsheetApp.openByUrl(url);
  const ws = ss.getSheetByName('Base');
  const names = ws.getRange(2, 3, ws.getLastRow() - 1).getValues().map(a => a[0]);
  let nameList;
  for (let i = 0; i < names.length; i++){
    if (names[i] !== ""){
      let name = {[names[i]]:names[i]};
      nameList = Object.assign(name);
    }    
  } 
  return nameList;
}
函数getIngredientsList(){ const url=“电子表格\u url”; const ss=SpreadsheetApp.openByUrl(url); const ws=ss.getSheetByName('Base'); const name=ws.getRange(2,3,ws.getLastRow()-1).getValues().map(a=>a[0]); 让我们列出名单; for(设i=0;i

我错在哪里以及如何纠正它?

我相信你的目标如下

  • 您希望从单元格“C2:C28”中检索值,并希望创建一个键和值相同的对象
对于这个,这个修改怎么样?
Object.assign()
的参数是
Object.assign(目标,…源)
。因此,在脚本中,需要像
nameList=Object.assign(nameList,name)
一样使用
nameList={}
nameList

发件人: 参考:

更干净的方法是使用
reduce
方法:

var name=['ABC'、'XYZ'、'PQR'];
var结果=名称。减少((acc,elem)=>{
acc[elem]=elem;
返回acc;
},{});

控制台日志(结果)您可以与预期输出共享虚拟数据吗?
let nameList;
for (let i = 0; i < names.length; i++){
  if (names[i] !== ""){
    let name = {[names[i]]:names[i]};
    nameList = Object.assign(name);
  }    
}
let nameList = {};  // Modified
for (let i = 0; i < names.length; i++){
  if (names[i] !== ""){
    let name = {[names[i]]:names[i]};
    nameList = Object.assign(nameList, name);  // Modified
  }
}
const nameList = ws.getRange(2, 3, ws.getLastRow() - 1).getValues()
.reduce((o, [e]) => {
  if (e != "") Object.assign(o, {[e]: e});
  return o;
}, {});