即使在研究过问题之后,我也遇到了以下问题并无法解决问题。我需要在 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
我很感激有关此方面的任何建议!
答案 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);
}
}