Scr*_*xop 7 google-sheets vlookup google-apps-script
目前,我有一个模仿VLOOKUP函数的脚本,如下所示-
function lookupUpdate() {
// Test variables
var HashID = "B2";
var EditorName = "Jane";
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var values = ss.getDataRange().getValues();
for (var i = 0; i < values.length; i++) {
if (values[i][0] == HashID) {
// hard coding the value 2 as the 'EditorName' corresponds to Column B
ss.getRange(i + 1, 2).setValue(EditorName);
// trying to find a way to not hard code this value (2)
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的工作表的架构非常简单-

但是,我想优化脚本,以便它根据标题名称查找并设置值,而不是有人对值进行硬编码,因为每次在现有的数据集数组之间引入新列时,都会变得很困难。
是否可以在不破坏整个代码的情况下实现?
通常,我会使用indexOf函数进行类似VLOOKUP的更新,并且根据您的情况,我建议如下修改代码-
function lookupUpdateNew() {
var HashID = "B2";
var EditorName = "Jane";
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var values = ss.getDataRange().getValues();
var headers = values[0];
var hashIDIndex = headers.indexOf('HashID');
var editorNameIndex = headers.indexOf('EditorName');
for (var i = 0; i < values.length; i++) {
if (values[i][hashIDIndex] == HashID) {
ss.getRange(i + 1, editorNameIndex + 1).setValue(EditorName);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
让我知道这是您所期望的还是更多。我敢肯定,还有很多其他/更好的方法可以做到这一点。
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |