1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
/** * myFunction を実行すると sheetName 内の keywords を含む行をグレーに塗る */ const id = 'xxxxxx-xxxxxxxxx_11111-XXXXXXXXXXXXXXXXXXXXX'; const sheetName = 'シート1'; const keywords = ['ホゲギンコウ', 'フガカンパニー']; const 指定した行を返す関数 = ({ dataRangeValues, row }) => dataRangeValues[row - 1]; const 指定した行のカラム数を返す関数 = ({ dataRangeValues, row }) => 指定した行を返す関数({ dataRangeValues, row }).length; const 指定した行を色付けする関数 = ({ sheet, dataRangeValues, row, color = '#C0C0C0' }) => { const カラム数 = 指定した行のカラム数を返す関数({ dataRangeValues, row }); /* getRange(row, column, numRows, numColumns) */ sheet.getRange(row, 1, 1, カラム数).setBackground(color); }; const 文字列1が文字列2を含んでいたら真となる関数 = (文字列1, 文字列2) => 文字列1.indexOf(文字列2) !== -1; const 行がキーワードを含んでいたら真となる関数 = ({ dataRangeValues, row, keywords }) => { const columns = 指定した行を返す関数({ dataRangeValues, row }); for (const column of columns) { for (const keyword of keywords) { if (文字列1が文字列2を含んでいたら真となる関数(String(column), keyword)) { return true; } } } return false; }; const キーワードをカラムに持つ行に色を塗る関数 = ({ sheet, keywords }) => { const dataRangeValues = sheet.getDataRange().getValues(); for (let i = 0; i < dataRangeValues.length; i++) { const row = i + 1; if (行がキーワードを含んでいたら真となる関数({ dataRangeValues, row, keywords })) { 指定した行を色付けする関数({ sheet, dataRangeValues, row }); } } }; const myFunction = () => { const sheet = SpreadsheetApp.openById(id).getSheetByName(sheetName); キーワードをカラムに持つ行に色を塗る関数({ sheet, keywords }); }; // 参考 // https://qiita.com/cazimayaa/items/224daebe536799e5a8a2 |