今回はGASを使って入力規則(プルダウン)を作成する方法を説明します。
入力規則とは
入力規則とはセルに値を入力する際、あらかじめ設定されているリストの中から選択できる機能です。
直接入力をせずにリストから選択するため、入力ミスを防ぐことができます。
スプレッドシートで設定する場合はツールバーの「データ」→「データの入力規則」から行いますが、今回はGASを使って設定する方法を説明します。
// スプレッドシートと連携 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// シート名を変数に格納 const scheduleSheetName = `タスク管理`; const corporateSheetName = `企業一覧`; // シート名を指定してシートを取得 const scheduleSheet = spreadsheet.getSheetByName(scheduleSheetName); const corporateSheet = spreadsheet.getSheetByName(corporateSheetName);
// 「企業一覧」シートの「企業名」列の最初の行番号 const firstRow = 6;
// 「企業一覧」シートの「企業名」列の最後の行番号 const lastRow = corporateSheet.getLastRow();
// 「企業一覧」シートの「企業名」列番号 const corporateNameColumn = 2;
// 企業名を格納する配列 const corporateNames = [];
// 「企業一覧」シートの企業名を配列に格納 for (let row=firstRow; row<=lastRow; row++) { // 「企業名」が入ったセルを指定 const corporateNameCell = corporateSheet.getRange(row, corporateNameColumn); // 「企業名」が入ったセルの値を取得 const corporateName = corporateNameCell.getValue(); // 「企業名」を配列に追加 corporateNames.push(corporateName); }
for (let row=firstRow; row<=lastRow; row++) { // 処理 }
const corporateNameCell = corporateSheet.getRange(row, corporateNameColumn);
const corporateName = corporateNameCell.getValue();
corporateNames.push(corporateName);
const rule = SpreadsheetApp.newDataValidation().requireValueInList(corporateNames).build();
const rule = SpreadsheetApp.newDataValidation().requireValueInRange(corporateRange).build();
// --------------------------- 会社リストを作成 ------------------------------- function createCorporateList() { // スプレッドシートと連携 const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // シート名設定 const scheduleSheetName = `タスク管理`; const corporateSheetName = `企業一覧`; const scheduleSheet = spreadsheet.getSheetByName(scheduleSheetName); const corporateSheet = spreadsheet.getSheetByName(corporateSheetName); // 「企業一覧」シートの「企業名」列の最初の行番号 const firstRow = 6; // 「企業一覧」シートの「企業名」列の最後の行番号 const lastRow = corporateSheet.getLastRow(); // 「企業一覧」シートの「企業名」列番号 const corporateNameColumn = 2; // ---------------------------- 配列を使用する場合↓ ---------------------------- // 企業名を格納する配列 const corporateNames = []; // 「企業一覧」シートの企業名を配列に格納 for (let row=firstRow; row<=lastRow; row++) { const corporateNameCell = corporateSheet.getRange(row, corporateNameColumn); const corporateName = corporateNameCell.getValue(); corporateNames.push(corporateName); } const rule = SpreadsheetApp.newDataValidation().requireValueInList(corporateNames).build(); // ---------------------------- 配列を使用する場合↑ ---------------------------- // ---------------------------- 範囲を直接指定する場合↓ ---------------------------- // corporateRange = corporateSheet.getRange(firstRow, corporateNameColumn, lastRow-5, 1); // const rule = SpreadsheetApp.newDataValidation().requireValueInRange(corporateRange).build(); // ---------------------------- 範囲を直接指定する場合↑ ---------------------------- let cell = scheduleSheet.getRange(scheduleSheet.getLastRow()+1, corporateNameColumn) cell.setDataValidation(rule); }