GASをスマホの操作で処理開始させるための工夫
GASで作った処理をスマホからも安全に実行できるようにした実践記録です。
図形ボタンやmsgBoxが使えないスマホ環境で、onEditトリガーと確認セルを活用する工夫を紹介します。
このブログは、Google Apps Script(GAS)を使った自作ツールの記録や、開発の過程での気づきをまとめたものです。
丁寧な解説というより、「こんなこともGASでできるんだ」というアイディアのきっかけになれば幸いです。
やりたかったこと
GASの処理はこれまでPCからしか実行できませんでした。
外出先や作業中でもスマホから処理できたら便利だと感じたのがきっかけです。
ただし、スマホでは図形ボタンやmsgBoxが使えないため、スマホ向けの安全な処理開始方法を模索しました。
使ったロジック・ポイント
スマホでも処理が開始できるよう、トリガーや確認手順を工夫しました。
① onEditトリガーの活用
- スプレッドシートの編集をトリガーにする
- スマホでも編集操作が可能なので汎用性が高い
② チェックボックスやプルダウンで処理の合図
- チェックボックスがONになったら処理を開始
- 誤操作を避けるため、2段階チェックで実行
③ 確認メッセージをセルに表示
- msgBoxが使えないため、確認用メッセージはセルに出力
- 5秒以内に確認チェックが入ったら処理開始
- 終了メッセージもセルで通知
コード例
この記事は、シート上のチェック操作を起点にする処理の実例です。GASを開いて保存する基本操作と、初期設定時の権限をご確認ください。コード中の onEdit(e) は編集時の情報を使うため、エディタから直接実行する方法とは異なります。
編集で動くトリガーには、利用できるサービスの制約があります。時間指定トリガーを作成する掲載例は、利用時にトリガーの種類・権限を確認する必要があります。Google公式のトリガーの説明もご確認ください。
以下は、チェックボックスと確認セルを使ってスマホから処理を安全に始めるためのコードです。
const SHEET_NAME = 'シート1';
const START_ROW = 2;
const START_COL = 2;
function onEdit(e) {
const sheet = e.source.getSheetByName(SHEET_NAME);
const range = e.range;
const row = range.getRow();
const col = range.getColumn();
if (row === START_ROW && col === START_COL && e.value === "TRUE") {
sheet.getRange("D2").setValue("本当に実行しますか?5秒以内に右のチェックをON");
ScriptApp.newTrigger("checkConfirmation")
.timeBased()
.after(5000)
.create();
}
}
function checkConfirmation() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
const confirmValue = sheet.getRange("E2").getValue();
if (confirmValue === true) {
sheet.getRange("D2").setValue("処理を開始します…");
doSomething();
sheet.getRange("D2").setValue("処理が完了しました");
} else {
sheet.getRange("D2").setValue("キャンセルされました(確認チェックなし)");
}
}
function doSomething() {
Logger.log("任意の処理中...");
}
メモ・反省・次回やりたいこと
スマホ対応をしたことで、PCを開かずに処理を実行できるようになり作業効率が上がりました。
ただし、スマホでは表示が崩れやすいため、PCとスマホでUIを分けた方が使いやすくなるかもしれません。
今後は、スマホ専用のインターフェースや、通知連携(LINEなど)にも挑戦したいです。
関連リンク
次に学べる内容や、関連する実例はこちらをご覧ください。
自分の業務に自動化機能を追加したい方へ
スマホからの入力・操作をきっかけに、業務の処理を自動化する機能を追加したい方はご相談ください。今の作業と希望する自動化を伺い、対応できる範囲をご案内します。