やりたいこと
- スクリプト内にデータの入力規則のリストを設定しておく
- A列に値を入れると、B列にデータの入力規則が追加される
- 列の値が空になると、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