Я новичок здесь в скриптах приложений Google, и мой JavaScript также не очень силен, но ни одна из них не является проблемой, так как мой код работает при первом запуске, но потом, когда я пытаюсь вызвать это снова не удается.
Просто я пытаюсь использовать функцию, которая будет динамически находить данный текст в заданном диапазоне. Хотя, похоже, может быть встроенный пакет, который делает это, я не могу понять, как его реализовать. И документация не полезна для кого-то нового.
Вариант 1: было реализовать следующее: https://developers.google.com/apps-script/reference/spreadsheet/text-finder#findAll ()
Поскольку выяснить, как это сделать не удалось, я перешел к созданию следующие две простые функции, вариант 2:
function findIndexRow(range,fText){
for(var i = 0; i<range.length;i++){
for(var j = 0; j<range.length;j++){
if(range[i][j] == fText){
var fTextRow = i+1;
var fTextCol = j+1;
}
}
}
return fTextRow
}
function findIndexCol(range,fText){
for(var i = 0; i<range.length;i++){
for(var j = 0; j<range.length;j++){
if(range[i][j] == fText){
var fTextRow = i+1;
var fTextCol = j+1;
}
}
}
return fTextCol
}
Он принимает диапазон, который я определил следующим образом:
var sheet = SpreadsheetApp.openById('the-gsheet-id');
var CurrSheet = sheet.getSheetByName('Sheet1');
var SHTvalues = CurrSheet.getDataRange().getValues();
Так что вышеприведенное работает, когда я вызываю его один раз в своем основном коде, но во второй раз он возвращает null
, здесь можно узнать, почему повторный вызов одной и той же функции не работает.
var text1Row = findIndexRow(SHTvalues,"text1");
var text1Col = findIndexCol(SHTvalues,"text1");
Logger.log(text1Row)
Logger.log(text1Col)
var text2Row = findIndexRow(SHTvalues,"text2");
var text2Col = findIndexCol(SHTvalues,"text2");
Logger.log(text2Col)
Logger.log(text2Row)
Я не могу понять, почему мои журналы возвращают правильные значения для text1Row
и text1Col
, но при повторном вызове text2Row
и text2Col
оба возвращают null