以下のようなスプレッドシートのデータがあります。
| A | B | C | |
|---|---|---|---|
| 1 | 工程 | 担当 | 点検 |
| 2 | A | a | |
| 3 | B | a | |
| 4 | C | 点検対象外 | |
| 5 | D | 点検対象外 | |
| 6 | E | b | |
| 7 | F | b |
上記データから下記、右端にスプレッドシート上での行数を追加(し、点検対象外を除外・担当列を除外=作成済)した配列を作成したいのですが、可能でしょうか。
| 工程 | 点検 | 1 |
| A | 2 | |
| B | 3 | |
| E | 6 | |
| F | 7 |
上記の処理は、下記プログラムで必要となります。
点検した工程が配列koteiで与えられるので、まだ済と記入されていなければ、
済と記入する行数と済と記入する前の値を取得し、該当セルに済と記入します。
(※済と記入する行数と済と記入する前の値を取得するのに2行let henko, let statusありますが、
こちらを1行にする方法はあれば教えて頂けるとありがたいです。)
function koshin() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet"); let data = sheet.getRange(1, 1, sheet.getLastRow(), 3).getValues(); ★★ここに、スプレッドシート上での行数を配列dataの右端に追記する処理を追加★★ data = data.filter(v => v[1] !== "点検対象外").map(v => [v[0], v[2], v[3]]); const kotei = ["B", "E"]; for (let i = 0; i < kotei.length; i++) { let henko = data.find(v => v[0] === kotei[i] && v[1] !== "済")?.[2]; let status = data.find(v => v[0] === kotei[i] && v[1] !== "済")?.[1]; if (henko > 0) { console.log(status) sheet.getRange(henko,3).setValue("済"); } } }

0 コメント