0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GAS リンク での 実行 は出来ないが「入力規則+トリガー」ならコピー・実行位置取得も容易

Last updated at Posted at 2024-12-17

端的に

1、特定の状況の時だけ実行されるGASを記述する
2、セルの変更時トリガーを用意する
3、データの入力規則で -- と 実行 などを用意する

特定の時だけ実行されるGAS

特定シートという名前のシートで M列=13列目 のセルが変更されたら動くGAS

function onTrig1(){
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getActiveSheet();
  var sheetName =sheet.getName();
  //******「特定のシート」だったら ******
  if(sheetName=="特定のシート"){
    var activeCell = sheet.getActiveCell();
    var value_snd=activeCell.getValue();
    var row = activeCell.getRow();
    var column = activeCell.getColumn();
    //******13列目でセルの値が「送信」だったら ******
    if(column==13&&value_snd=="送信"){
      var val=sheet.getRange(row,column-1).getValue();
      var emailAddress = "abc@def.com";
      var bod="メール<br />本文"
      GmailApp.sendEmail(emailAddress, "スプレッドシートの値",'', {htmlBody: bod});
      //******送信->「--」などに戻す ******
      activeCell.setValue("--");
    }
  }
}

セルの編集時トリガー

トリガー -> トリガーの追加 -> 実行する関数を選択で「ファンクション名を選択」(例:onTrig1) -> イベントの種類で「変更時」 を選択
トリガー.jpg

データの入力規則で疑似スイッチを作成

入力規則.jpg

実行

設置した入力規則を 「--」から「送信」に変更すると
GASが実行され 終了すると GAS自身で 入力規則を「--」に戻す
入力規則であればコピーが容易。
アクティブセルが使えるので複数のGASも不要。実行位置で制御できる。

設置したい 列 が異なる場合はGAS(例:column==13)も変更が必要なので注意。

なぜ作成したか

GASを実行したいが複数ある場合ボタンなどを増やしたりするのが大変
そもそも画像だとアクティブ処理取得が効かないのでGASを増やさないといけない。
トリガー追加だともっさり動作になるのでは?と思っての追加でしたが
全く違和感ディレイ感もなく動作しました。

AiGeminiに聞いたらリンクの挿入で「javascript:google.script.run.onTrig1();」
で一発!というガセネタの一点張りから始まった。
そもそも「不正なurl判定」で適用すら出来ず。
ウェブアプリ化デプロイ や =HyperLinkでいれてみたり
GASのURLを=HyperLinkに入れろ というガセ情報もつかまされ
非常に遠回りをしての発見。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?