・いずれも、検索対象が複数存在する場合は、最初に見つかった行の行番号のみを返すとします。
① for文を使います。
js
1function fn1() {
2 var ss = SpreadsheetApp.getActiveSpreadsheet();
3 var sheet = ss.getSheetByName("シート1");
4 var data = sheet.getRange(1, 1, 7, 2).getValues();
5 let row = 0
6 for(; row < data.length; row++) {
7 if (data[row][0] == "B支店" && data[row][1] == "庶務課") {
8 break;
9 }
10 }
11 if (row === data.length) {
12 console.log('見つかりませんでした');
13 } else {
14 console.log(row + 1);
15 }
16}
② A列とB列の文字列を連結して検索します。行番号をindexOfで返します。
js
1function fn2() {
2 var ss = SpreadsheetApp.getActiveSpreadsheet();
3 var sheet = ss.getSheetByName("シート1");
4 var data = sheet.getRange(1, 1, 7, 2).getValues();
5 var select = data.map(v => v[0] + v[1]).indexOf("B支店" + "庶務課");
6 if (select === -1) {
7 console.log('見つかりませんでした');
8 } else {
9 console.log(select + 1);
10 }
11}
③②だと「B支店/庶務課」と「B/支店庶務課」「「B支/店庶務課」の区別がつかないんじゃ?という疑問をもし持たれる場合は、
map とfilterを使うやり方があります。
(mapで行番号をつけたオブジェクトにしておいて、filterで抽出した後、オブジェクトから行番号を取得する)
js
1function fn3() {
2 var ss = SpreadsheetApp.getActiveSpreadsheet();
3 var sheet = ss.getSheetByName("シート1");
4 var data = sheet.getRange(1, 1, 7, 2).getValues();
5 var select = data.map((val, idx) => ({ val, idx })).filter(v => v.val[0] == "B支店" && v.val[1] == "庶務課");
6 if (select.length === 0) {
7 console.log('見つかりませんでした。')
8 } else {
9 console.log(select[0].idx + 1);
10 }
11}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/27 14:16 編集