13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

スマホからGAS起動

Last updated at Posted at 2021-11-24

スマホからだと図形ボタンが押せない

ので、GASの発火に困るんですよね。
今回は図形ボタンの代わりを作ります。

チェックボックスが便利

チェックボックスはスマホからでも押せます。ちょっと小さいですが。
image.png

完成品

こうなります。ボタン押下で緑のゾーンに今日日付を入力するようにしました。
image.png

GASソース.js
function todayButton() {
  // ★スマホからだと、ダイアログが表示できず、以降の処理が進まないためコメントアウト。
  // let msg = Browser.msgBox('確認メッセージ','今日日付を入力しますか?',Browser.Buttons.OK_CANCEL);
  // if (msg != 'ok') return;
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const LAST_ROW = sheet.getRange('A2:A11').getValues().filter(String).length;
  sheet.getRange(LAST_ROW + 2, 1).setValue(new Date());
}

// 編集時に起動する「onEdit」関数
// ★スマホからだと図形ボタンをクリックできないので、イベント発火をチェックボックスにした。
function onEdit() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // チェックボックスONで起動
  if (sheet.getRange('A13').getValue()) {
    todayButton();
  }
  sheet.getRange('A13').uncheck();
}

解説

まずはこちら

onEdit.js
// 編集時に起動する「onEdit」関数
// ★スマホからだと図形ボタンをクリックできないので、イベント発火をチェックボックスにした。
function onEdit() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // チェックボックスONで起動
  if (sheet.getRange('A13').getValue()) {
    todayButton();
  }
  sheet.getRange('A13').uncheck();
}

onEditという名前の関数にすると、スプレッドシートが編集された時に呼び出されます。
またif文にて、チェックボックスがTrueの時のみ処理を実行するようにしています。
そして処理終了でチェックボックスをFalseにします。

これにより、ボタンが押されたときのみ処理を実行し、ボタンでない部分の編集では何もしない
さらに、ボタン押下後は再度ボタンが押せるようにしてあります。

つぎはこちら。

処理.js
function todayButton() {
  // ★スマホからだと、ダイアログが表示できず、以降の処理が進まないためコメントアウト。
  // let msg = Browser.msgBox('確認メッセージ','今日日付を入力しますか?',Browser.Buttons.OK_CANCEL);
  // if (msg != 'ok') return;
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const LAST_ROW = sheet.getRange('A2:A11').getValues().filter(String).length;
  sheet.getRange(LAST_ROW + 2, 1).setValue(new Date());
}

ダイアログ表示の部分も、図形ボタンと同様にスマホに対応してません。
PC版の時は有効なのでお試しあれ。

.js
const LAST_ROW = sheet.getRange('A2:A11').getValues().filter(String).length;

↑このソースによって、A列の緑の部分のうち、
「上から入力していくんだけど、次は何行目に入力すんの?」って行数を取得したい。
ようは空白セルまで何行あるかを取得。
んで

.js
sheet.getRange(LAST_ROW + 2, 1).setValue(new Date());

これで、現在日付を入力する。
まぁここの処理部分は好きな処理にすればよくて
スマホからGASボタンを押すにはonEdit関数をうまく使おう!というお話。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?