我对以下任务感到困惑。 最后,我想在电子表格中找到某些数据。 这不是问题,我可以找到一个定义的值,并通过以下方式获取我需要的任何信息:
function findCell() {
var ss = SpreadsheetApp.openById('ID');
var sheet = ss.getSheetByName('NAME');
var dataRange = sheet.getDataRange();
var values = dataRange.getValues();
for (var i = 0; i < values.length; i++) {
var row = "";
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] == "Hallo") {
row = values[i][j+11];
Logger.log(row);
Logger.log(i);
}
}
}
}
但我并不是想找到确切的值“Hallo”,而是以“Hallo_xxx”开头。我试图使用即indexOf,但我不确定我做错了什么 - 这个任务听起来不太难解决。这里有人有个好主意吗?
感谢您的建议, 萨
答案 0 :(得分:0)
这里是我刚编写和测试过的一些代码。 findCell()应该做你想要的。正如您所推测的那样,indexOf()会快速查找字符串中的特定文本,但我不知道您在代码中尝试使用它的位置。
var ROW = 0;
var COLUMN = 1;
function test(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var results = findCell("Hallo_xxx", sheet);
for(var i=0 ; i<results.length ; i++){
Logger.log("Match found at: " + colToA1(results[i][COLUMN]) + (results[i][ROW] + 1));
}
}
function findCell(string, sheet) {
var range = sheet.getDataRange();
var values = range.getValues();
var results = [];
for(var i=0 ; i<values.length ; i++){
for(var j=0 ; j<values[0].length ; j++){
if(values[i][j].indexOf(string) != -1){
results.push([i, j]);
}
}
}
return results;
}
function colToA1(col){
return col < 26 ?
String.fromCharCode(col + 65) :
String.fromCharCode(parseInt(col / 26) + 64) + String.fromCharCode((col % 26) + 65);
}
答案 1 :(得分:0)
稍微研究一下,我正在寻找的答案是:
function findCell2() {
var ss = SpreadsheetApp.openById('ID');
var sheet = ss.getSheetByName('Name');
var values = sheet.getDataRange().getValues();
for(var i=1;i<values.length;i++){
if((values[i][1].indexOf('Hallo') > -1){
Logger.log('xxx: ' + values[i][2]);
}
}
}