見出し画像

【GAS】Google Apps Script 活用事例 条件付き書式を挿入するスクリプト

重複を判定する条件付き書式

=COUNTIF(A:A,A:A)>1
重複している名前やIDを水色に着色する

スクリプト全体

function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu('追加メニュー')
  .addItem('重複しているIDに色をつける条件付き書式を追加する', 'showDouble')
  .addItem('closeになったら灰色にする条件付き書式を追加する', 'setBackColorsWhenClose')
  .addToUi();
}


function showDouble(){
  const format = '=COUNTIF(A:A,A:A)>1';
  insertFormula_(format);
}


function setBackColorsWhenClose(){
  const format = '=$A2="close"';
  insertFormula_(format);
}


/**
 * 選択している範囲に、上限付き書式を挿入する
 * @param {string} 条件付き書式
 * 
 */
function insertFormula_(format) {
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet       = spreadsheet.getActiveSheet();
  const activeRange = sheet.getActiveRange();

  console.log(`アクティブなシート:${sheet.getName()}`);
  console.log(`アクティブな範囲:${activeRange.getA1Notation()}`);

  let rule;

  switch(true){
    case /.*COUNTIF.*/.test(format):
      rule = SpreadsheetApp.newConditionalFormatRule()
      .whenFormulaSatisfied(format)
      .setBackground('#CFE2F3')//背景色を水色にする
      .setRanges([activeRange])//範囲は現在使われている範囲
      .build(); //条件を確定
      break

    case /.*close.*/.test(format):
      rule = SpreadsheetApp.newConditionalFormatRule()
      .whenFormulaSatisfied(format)
      .setBackground('#999999')
      .setRanges([sheet.getRange('A2:Z1000')])
      .build();
      break

    default:

  }
  
  const rules = [];
  rules.push(rule);

  sheet.setConditionalFormatRules(rules);
}

特定の単語があったら行全体を灰色に着色する

=$A2="close"
特定の単語があったら行全体を灰色に着色する

2つの単語のうち、いずれかのキーワードを含む単語があったら着色する

=OR(REGEXMATCH($C2,"内定.*"),REGEXMATCH($C2,"オファー.*"))
こんな感じ


この記事が気に入ったらサポートをしてみませんか?