Kel*_*ddy 17 google-sheets google-apps-script
我是Google Apps脚本的新手.我想通过它的列名来获取特定单元格的值,而不是列索引.这是我有的:
var rows = sheet.getDataRange();
var values = rows.getValues();
var row =values[1];
var rowStaffName = row[0];
Run Code Online (Sandbox Code Playgroud)
而不是使用row[0]
,我想使用列名称.有一个简单的方法吗?
小智 25
以下函数在给定行中重试具有给定名称的列中的值.
function getByName(colName, row) {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var col = data[0].indexOf(colName);
if (col != -1) {
return data[row-1][col];
}
}
Run Code Online (Sandbox Code Playgroud)
具体来说,var col = data[0].indexOf(colName);
在工作表的顶行中查找给定名称.如果找到,则返回该列的给定行中的值(row-1
用于说明基于0的JavaScript索引).
要测试这是否有效,请尝试类似的方法
function test() {
Logger.log(getByName('Price', 4)); // Or whatever name or row you want
}
Run Code Online (Sandbox Code Playgroud)
可能还需要一个函数来返回给定名称的整个列,而不仅仅是单个单元格。另一个答案的这种变体为此目的效果很好:
function getByName(colName, sheetName) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var data = sheet.getRange("A1:1").getValues();
var col = data[0].indexOf(colName);
if (col != -1) {
return sheet.getRange(2,col+1,sheet.getMaxRows()).getValues();
}
}
Run Code Online (Sandbox Code Playgroud)
建立在其他答案之上,为您提供全面的功能集合。
function getCellRangeByColumnName(sheet, columnName, row) {
let data = sheet.getDataRange().getValues();
let column = data[0].indexOf(columnName);
if (column != -1) {
return sheet.getRange(row, column + 1, 1, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
function getCellValueByColumnName(sheet, columnName, row) {
let cell = getCellRangeByColumnName(sheet, columnName, row);
if (cell != null) {
return cell.getValue();
}
}
Run Code Online (Sandbox Code Playgroud)
function getColumnRangeByName(sheet, columnName) {
let data = sheet.getRange("A1:1").getValues();
let column = data[0].indexOf(columnName);
if (column != -1) {
return sheet.getRange(2, column + 1, sheet.getMaxRows());
}
}
Run Code Online (Sandbox Code Playgroud)
function getColumnValuesByName(sheet, columnName) {
let column = getColumnRangeByName(sheet, columnName);
if (column != null) {
return column.getValues();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19812 次 |
最近记录: |