Apps Script

入力BOX » キャンセルボタン追加

※ 記事内には広告が含まれています。

やっぱり入力BOXには「キャンセルボタン」があったほうがよいのでは…と思いましたので、

  • 入力BOXに【何か入力】または【何も入力しない】 » キャンセル » スプレッドシートには何も入力されないで入力BOXが閉じる
  • 入力BOXに入力 » OK » スプレッドシートに書き込みされる
  • カスタムメニューに「入力BOXキャンセル付き」の項目を追加して実行できるように

以上のような動作になるようなコードを試してみます。関数名は、addData1() となっています。(サンプルコードです。適宜修正等お願いします)

function addData1() {
  // ユーザーに入力を求める
  var input = Browser.inputBox('データを入力してください', Browser.Buttons.OK_CANCEL);

  // キャンセルボタンが押されたとき
  if (input == 'cancel') {
    return; // ここで関数を終了
  }

  // キャンセル以外の場合のみ実行
  else {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.appendRow([input]); // 最終行に入力されたデータを追加
  }
}

カスタムメニューに、「入力BOXキャンセル付き」の項目を追加するには、

.addItem('入力BOX', 'addData')  // メニュー項目を追加

の下側に下記コードを追加します。

.addItem('入力BOXキャンセル付き','addData1')

カスタムメニューのコードは下記のようになります。(サンプルコードです。適宜修正等お願いします)

function onOpen() {
  var ui = SpreadsheetApp.getUi();  // UIを取得
  
  ui.createMenu('カスタムメニュー')  // メニューを作成
    .addItem('入力BOX', 'addData')  // メニュー項目を追加
    .addItem('入力BOXキャンセル付き','addData1')
    .addToUi();  // メニューをUIに追加
}

全体のコードです。(サンプルコードです。適宜修正等お願いします)

function addData() {
  // ユーザーに入力を求める
  var input = Browser.inputBox('データを入力してください');

  // 入力が空でない場合にデータをスプレッドシートに追加
  if (input) {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.appendRow([input]); // 最終行に入力されたデータを追加
  } else {
    Browser.msgBox('データが入力されませんでした');
  }
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();  // UIを取得
  
  ui.createMenu('カスタムメニュー')  // メニューを作成
    .addItem('入力BOX', 'addData')  // メニュー項目を追加
    .addItem('入力BOXキャンセル付き','addData1')
    .addToUi();  // メニューをUIに追加
}

function addData1() {
  // ユーザーに入力を求める
  var input = Browser.inputBox('データを入力してください', Browser.Buttons.OK_CANCEL);

  // キャンセルボタンが押されたとき
  if (input == 'cancel') {
    return; // ここで関数を終了
  }

  // キャンセル以外の場合のみ実行
  else {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.appendRow([input]); // 最終行に入力されたデータを追加
  }
}