使用数组中的值名称创建变量

时间:2014-03-20 20:21:38

标签: google-apps-script google-sheets

即使在研究过问题之后,我也遇到了以下问题并无法解决问题。我需要在 Google Apps脚本

中进行以下操作

我有一个基于电子表格行的数组:

var columnTitleValues = rangeTitle.getValues();

我将每列的标题保存在一个数组中。

现在,我想在相应的变量中保存每个标题的索引。

例如,电子表格可能如下所示:

**ID | Title | Date | User**

**01 | Test  | 23.5 | admin**

我有数组["ID", "Title", "Date", "User"],我希望使用这些名称创建变量,基本上,我不想手工完成!

var id = ..

var title = ..

var date = ..

var user = ..

创建变量后,很容易找到字符串匹配的列的索引,但我想自动获取名称。

关于我如何做到这一点的任何线索?

我试过了:

var columnTitleValues [0][0] = --> ERROR
eval("var columnTitleValues[0][k]=3;"); --> ERROR

我很感激有关此方面的任何建议!

2 个答案:

答案 0 :(得分:1)

您应该将列标题设置为存储其位置的对象的属性,而不是尝试创建离散变量名称。这是一个例子。

function headingTest() {
  var ss =  SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var data = sheet.getDataRange().getValues();

  // your titles will be in row 0
  var headings = {};
  data[0].forEach( function (cell,i) {
    headings[cell] = i;
  });

  // you can now access data by name .. for example log all the users..
  data.forEach ( function (row,i) {
    if (i > 0 ) Logger.log (row[headings['User']]);
  });


}

答案 1 :(得分:1)

对象方法非常诱人,并且揭示了user400514可能对JavaScript非常熟悉(我投了他的答案)但是还有#34;纯数组"方法也有一些吸引人的方面;)

这是数组方法的一个实现,请记住,数组是从0开始索引的,因此列A是索引0而行1也是索引0。

function createVars(){
  var ss =  SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Sheet1');
  var data = sheet.getDataRange().getValues();
  var headers = data.shift();// this gets the headers and removes it from data
  Logger.log(headers);
  for(var n in data){
    var id = data[n][0];
    var title = data[n][1];
    var date = data[n][2];
    var user = data[n][3];
    Logger.log('id = %s, title = %s,  date = %s, user = %s',id,title,date,user);
  }
}