スプレッドシート内のボタンをクリックして関数を実行する方法をご紹介します。
1. 図形(ボタン)の準備
まずはスプレッドシートの[挿入] > [図形描画]から、任意の図形を作成しましょう。
今回はボタンをクリックするとその日の日付をセルに貼り付ける関数を実行するため、ボタンに「日付入力」と書いています。
2. 日付を貼り付ける関数を作成
概要は省略します。
pushBtn.gs
function pushBtn() {
// 現在のシートを取得
const Sheet = SpreadsheetApp.getActiveSheet();
// 今日の日付
const DateObj = new Date();
const Today = Utilities.formatDate(DateObj, 'Asia/Tokyo', 'yyyy年MM月dd日');
// スプレッドシートへ貼り付け
Sheet.getRange("A5").setValue(Today);
}
3. ボタンにスクリプトを割り当てる
ボタンにカーソルを合わせると右上に黒ぽちが表示されるので、それをクリックして「スクリプトを割り当て」をクリックする。
「どのスクリプトを割り当てますか?」と聞かれたら、実行したい関数名を入力する。
※今回の場合は「pushBtn」
4. 実行してみる
ボタンをクリックすることで、先ほど作成した関数が実行されます。
5. 誤クリックを防ぐために
スプレッドシートを操作していると、間違ってボタンをクリックしてしまうこともあるかと思います。
その場合はボタンクリック後にメッセージボックスを表示してみると良いかもしれません。
pushBtnMsg.gs
function pushBtnMsg() {
// 現在のシートを取得
const Sheet = SpreadsheetApp.getActiveSheet();
// 今日の日付
const DateObj = new Date();
const Today = Utilities.formatDate(DateObj, 'Asia/Tokyo', 'yyyy年MM月dd日');
const MsgBox = Browser.msgBox("日付を入力しますか?", Browser.Buttons.OK_CANCEL);
if (MsgBox == "cancel") {
Browser.msgBox("日付の入力を中止しました");
} else {
// スプレッドシートへ貼り付け
Sheet.getRange("A5").setValue(Today);
Browser.msgBox("日付の入力が完了しました");
}
}
実行するとこんな感じになります。
私は確認すら面倒くさいと感じてしまうので、メッセージボックスは使いませんが、分岐処理をする分には便利かもしれませんね。