【ゆるく始めるGAS】プルダウンメニューを作成

ブルーカラー人生設計

GAS超入門のプルダウンメニュー作成コードをお伝えします。

清掃業だと顧客ごとに作業メニューがありますよね。

たとえば、顧客名を入力すると隣のセルでその顧客の作業メニューが選べたら便利ですよね?

マルチーズ1号
マルチーズ1号

キーワードに関連する情報を

表示する方法は、またの機会に。

GASでプルダウンメニューを連続で作成する

1行毎の5列目に「プルダウンメニュー」を作成する。

その「プルダウンメニュー」は、「同行の13列目から33列目」までの値を表示する。

この作業を手作業で「プルダウンメニュー」の挿入をしていると日が暮れます、本当に。

または、共同編集者が誤操作で編集してしまい、他の行を参照してしまう可能性があります。

そこで、GASでプルダウンメニュー作成プログラムを作成しておくと、修正するときの手間がなくなります。

このように、万が一の備えという仕組みを作り、初めて自分以外の人間に仕事をお任せすることができます。

プルダウンメニューコードの解説

多少のGAS知識をもっていることを前提に解説します。

なのでシートの定義、変数に関しては省略します。

function mastersheetcontent () {const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('Master sheet');
console.log(sheet1.getName());
  
for (i=12; i<=445; i+=1){
12行目から445行目まで1行毎に繰り返すこと。(繰り返し文)
let array =sheet1.getRange(i,13,1,20);
プルダウンメニューで表示したい、作業メニューセル13列から33列の20列間を取得
iは1行ずつ取得する。
console.log(array.getValues());

let rule =SpreadsheetApp.newDataValidation().requireValueInRange(array).build();
・newDataValidation()入力規則、プルダウンメニューのこと
・requireValueInRange(array)特定の範囲内の値のみをセルに入力できるように制限するために使用されます。具体的には、セルに入力できる値を指定した範囲内の値に限定します。
・build()プルダウンメニューを作成
let cell = sheet1.getRange(i,5)
プルダウンメニューを作成したいセル番地、i=12行の5列 を1行毎に繰り返す
cell.setDataValidation(rule);
黄色線部を代入します。
}}

GASは6分間という制約があります。

このコードでは200行までの処理で時間切れになります。

本来は445行まで繰り返したいのですが。

そこで。

さらに高速化したければ、チャットGPTに聞いてください。

たとえば、

以下のコードを高速化してください。

function mastersheetcontent () {const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('Master sheet');
console.log(sheet1.getName());
  
for (i=12; i<=445; i+=1){

let array =sheet1.getRange(i,13,1,20);
console.log(array.getValues());

let rule =SpreadsheetApp.newDataValidation().requireValueInRange(array).build();

let cell = sheet1.getRange(i,5)

cell.setDataValidation(rule);

}}

以下のコードが返ってきます。

function mastersheetcontent() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet1 = ss.getSheetByName('Master sheet');
  console.log(sheet1.getName());
  
  // 事前にすべての必要な範囲を取得
  const dataRange = sheet1.getRange(12, 13, 434, 20).getValues();
  
  // すべてのデータ検証ルールを一度に設定するための配列を準備
  const rules = [];
  
  for (let i = 0; i < 434; i++) {
    let array = dataRange[i];
    console.log(array);
    
    // 配列をスプレッドシート範囲に変換
    let range = SpreadsheetApp.newDataValidation().requireValueInRange(sheet1.getRange(12 + i, 13, 1, 20)).build();
    rules.push(range);
  }
  
  // データ検証ルールをまとめて設定
  for (let i = 0; i < 434; i++) {
    let cell = sheet1.getRange(12 + i, 5);
    cell.setDataValidation(rules[i]);
  }
}

超初心者の私の理解を超えます。

このコードをコピーして、貼り付けてみると、あっという間にして欲しい作業が完了しました。

まとめ

超初心者は全て知る必要なし、よく言う「たたき台」を作ることに専念しましょう。

改善や改良はチャットGPTでOKなのでは.

とはいえ、「たたき台」を作るには、最低限のGAS知識は必要だと。

超初心者の私と一緒に成長していきましょう。

コメント