Google Apps ScriptでLINEに通知を送る【GAS】

現在、日本で主流となっているメッセージサービスは、LINEでしょう。Facebook MessangerやらHangoutやらいろいろありますが、メジャーとは言えない・・・世界では、SkypeやTeams、Whatsappなどいろいろあるのですが、それぞれの世界で活躍しています。ITの世界だとChatworkやSlackなんてのもありますね。

そんなLINEに例えばGASで作った申請フォームに投稿があったらグループトークに通知を送ってほしいなんて要望があります。すばやく誰かが補足して作業できるようにする為です。LINE Notify APIを利用するのですが、非常に簡単に装備できますよ。

今回使用するファイルとサービス

2025年3月31日をもってLine Notify APIは廃止されます。代替としてLine Messaging APIが利用可能です。以下のエントリーにLine Messaging APIで置き換えた場合の作成方法をまとめましたので、今後はLine Messaging APIを使ってボットを作成する必要性がありますので要注意。

Google Apps ScriptでLine Messaging APIでLINE通知を作成する【GAS】

事前準備

今回準備するのは、Access Tokenのみ。以下の手順で取得します。

  1. Line Notifyにログインします。
  2. 右上の自分の名前をクリックして、マイページを開きます。
  3. 投稿するグループトークを選択します。
  4. 下の方にある「トークンを発行する」をクリックします。
  5. アクセストークンが表示されるので、コピーして控えておく。このときの1回のみ表示されます。
  6. 対象のグループトーク内に、Line Notifyを招待しておきます。これがないと通知が届きません。

図:ここでトークンを手に入れます。

図:送り込むトークルームを選択しましょう。

ソースコード

GAS側コード

var endpoint = "https://notify-api.line.me/api/notify";

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('▶作業用')
    .addItem('通知の送信', 'entrynotify')
    .addSeparator()
    .addItem('トークンセット', 'tokenset')
    .addToUi();
}

//エントリー用のダイアログ生成
function entrynotify(){
  var html = HtmlService.createHtmlOutputFromFile('notify.html')
      .setWidth(600).setHeight(300);
  SpreadsheetApp.getUi().showModalDialog(html, '通知の投稿');
}

//LINEに通知を送る
function linenotify(message){
  //UIを取得
  var ui = SpreadsheetApp.getUi();
  
  //Access Tokenを取得する
  var prop = PropertiesService.getScriptProperties();
  var token = prop.getProperty("token");
  
  //tokenチェック
  if(token == "" || token == "undefined"){
    ui.alert("Tokenがセットされていないですよ。");
    return;
  }
  
  //送信オプション組み立て
  var options =
  {
    "method"  : "post",
    "payload" : "message=" + message,
    "headers" : {"Authorization" : "Bearer "+ token}
  };
  
  //通知を送る
  UrlFetchApp.fetch(endpoint,options);
  
  //通知内容をスプレッドシートに記述する
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("message");
  var array = [new Date(),message];
  ss.appendRow(array);
  
  //終了メッセージ
  ui.alert("送信完了!!");
  
}

//トークンをセットする
function tokenset(){
  //UIを取得
  var ui = SpreadsheetApp.getUi();
  
  //プロパティを取得
  var prop = PropertiesService.getScriptProperties();
  
  //問い合わせ
  var re = ui.prompt("Line Notifyのアクセストークンを入れてください。。",ui.ButtonSet.OK_CANCEL);
  switch(re.getSelectedButton()){
    case ui.Button.OK:
      var str = re.getResponseText();
      prop.setProperty("token", str);
      ui.alert(str + "で設定されました。");
      break;
    case ui.Button.CANCEL:
      ui.alert("設定はキャンセルされました。");
      break;
    case ui.Button.CLOSE:
      break;
  }
}
  • 今回はアクセストークンをスクリプトプロパティに格納するコードになっていますので、コードの中に直書きしていません。
  • linenotify関数が本体。メッセージを受け取ったら、通知を送り込むシンプル仕様。
  • 通知を送り込むエンドポイントURLは、https://notify-api.line.me/api/notifyとなっています。

HTML側コード

<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css">
<style>
  TEXTAREA{
    width:95%;
    height:200px;
  }
</style>

<script>
  //GAS側にチャット情報を送り込むルーチン
  function disp(){
    //内容を取得する
    var message = document.getElementById("wasabi").value;
    
    //GAS側へ送り込む
    google.script.run.linenotify(message);
    
    //プログレス表示
    document.getElementById("kinokoman").style.display = "none";
    document.getElementById("sendprogress").style.display = "block";
  }
</script>


<div width="95%" id='kurukuru'>
  <div style='padding:3px 10px;border-color:#0B0099;border-width:0 0 1px 7px;border-style:solid;background:#F8F8F8;'>😺メッセージ</div><p>
  <TEXTAREA class='wasabi' placeholder='チャット内容をここに記録します。' id='wasabi'></TEXTAREA><p>

  <p>
  <div align='center' id='kinokoman' style="display:block;">
    <hr><button class='action' onClick='disp();'>チャット送信</button>
  </div>
  
  <div id="sendprogress" style="display:none;" align='center'>
    <span id="progress">送信中・・・<img border='0' src='https://eye4brain.sakura.ne.jp/wp/library/icons/spinner.gif' width='32' height='32'></span>
  </div>
</div>
  • チャット送信をクリックすると、GAS側のlinenotify関数に送り込むだけのダイアログです。

実行と結果

今回のスプレッドシートでは、Access Tokenはスクリプトプロパティに格納し、そこから呼び出して使っています。まずは以下の手順で控えておいたトークンを登録し、通知用ダイアログからメッセージを送ります。

  1. メニューより「作業用」⇒「トークンセット」を開く
  2. アクセストークンを入力して閉じる。
  3. 次に通知の送信を開く
  4. メッセージを入れて、送るとLINE Notify経由でグループに通知が送り込まれる。

図:通知が無事に送り込まれました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)