やっぱり入力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]); // 最終行に入力されたデータを追加
}
}