LANG SELRCT

コードを書く場所

2019年10月24日木曜日

スプレッドシートのA列を編集したときに入力規則を設定したい


やりたいこと

  1. スクリプト内にデータの入力規則のリストを設定しておく
  2. A列に値を入れると、B列にデータの入力規則が追加される
  3. 列の値が空になると、B列の入力規則がクリアされる(選択肢が消える)


このように



コード.gs
var sheet = SpreadsheetApp.getActiveSheet();
var editcol = 1;// この列が編集されたら
var listcol = 2;// この列のデータの入力規則を設定する(editcolが空ならクリアする)

var dataList = [
  'TODO',
  'INPROGRESS',
  'DONE'
  ]

function onEdit() {
  var active = sheet.getActiveRange();
  var row = active.getRow();
  var range = sheet.getRange(row, listcol);
  if(active.getColumn() === editcol) {
    if(active.getValue() === '') {
      range.clearDataValidations();// データの入力規則をクリアする
    } else {
      addDataValidation(range);
    }
  }
}

//データの入力規則を設定する
function addDataValidation(range) {
  range.setDataValidation(SpreadsheetApp.newDataValidation()
  .setAllowInvalid(true)
  .requireValueInList(dataList, true)
  .build());
}



参考

Class DataValidationBuilder
https://developers.google.com/apps-script/reference/spreadsheet/data-validation-builder