パソコン用ヘッダー画像
Googleサービス PR

【GAS】Googleチャットに自動メッセージを送る方法

記事内に商品プロモーションを含む場合があります

社内で他の部署だったり、海外のオフィスとのやりとりでコミュニケーションツールとしてGoogleチャットを活用しています。



気軽に連絡がとりあえて非常に便利なツールなのですが、便利なツールであるがゆえに、業務上、自動化したいなぁというやりとりって存在しませんか?



そんなときにGoogle Apps Script を使えば、『必要な報告だけど、自動化で業務効率化』を図ることが可能になります。

Google有料サービス:Google Workspaceを活用している方向けの記事となります。あらかじめご了承ください。

Sheets:更新の自動通知方法

チャットツールをつかうビジネスマン

わざわざ、チャットにメッセージを飛ばすだけのためにスクリプトを組んで効率化を図れるケースはあまりありません。



今回は、スプレッドシートの更新をプロジェクトメンバーに伝えたいときにチャットで自動通知したい、という設定で伝えたいと思います。

スプレッドシートにGASを組み込む

  • STEP1
    スプレッドシート準備
    はじめにメンバーに更新を通知したいスプレッドシートを用意して【拡張機能】をクリック。

    スプレッドシートのGASは拡張機能から

  • STEP2
    Apps Scriptをクリック
    メニューの中からApps Scriptを選んでここにコードを入力します。

    Apps Script

  • STEP3
    コードはこちら
    はじめにコードは貼っておきます。詳しくは後述します。

    function message_to_chat() {
    
      const webhook_url = 'Webhook URL';  //WebhookのURLを確認して設定
      const message = {
          'text': '〇〇〇プロジェクト:シート更新しました。'
        };  // 投稿したいメッセージに変更してください
    
      const options = {
             'method': 'POST',
             'headers' : {
             'Content-Type': 'application/json; charset=UTF-8'
             },
          'payload': JSON.stringify(message)
        };  // Webhook URL に POST
      
      let response = UrlFetchApp.fetch(webhook_url, options);
    }

Webhookってなに?

コード内に【Webhook URL】とあります。これがチャットに外部からメッセージを投稿できるために必要なものになります。



Webhookを設定してスクリプトを組むとスプレッドシートの更新時にスクリプトを実行すると自動でチャットに設定しておいたメッセージが投稿されるという仕組みです。

Webhookの設定手順

Webhookの設定自体はカンタンです。

  • STEP1
    スペースひらく
    通知をとばしたいスペースを選びます。
  • STEP2
    アプリと結合
    スペース名右にある↓を押して【アプリと結合】をクリック

    チャットのスペース画面

  • STEP3
    Webhookを管理
    【Webhookを管理】をクリック

    Webhook管理画面

  • STEP4
    Webhook名を決める
    管理しやすくWebhookに名前をつけましょう。※可能ならアバターのURLも設定しておきましょう

    Webhookに名前をつける

  • STEP5
    Webhook URL の完成
    下のように表示されたらWebhookの設定が完了です。アバターを設定しておくと、画像の設定がされます。

    WebhookのURL設定完了画面

チャットへ自動通知を送ってみる

自動化にハマる

上の手順で設定したWebhook URL をスクリプト内にコピペすればスクリプトは完成です。あとはスクリプトを実行させてみて問題がないか確認しましょう。

チャットへメッセージを送信するスクリプト

問題なくチャットのスペースにメッセージが送信されているのが確認できました。これで都度手打ちで文字を打たなくても、スクリプト実行だけでメンバーにシート更新を伝えることができます。

送信先のスレッドを統一

スレッドを統一して送信したい

数か月前に、Googleチャットの仕様変更があり、前のGoogleチャットの仕様の話になります。今の作成するスペースとは異なる仕様です。



スレッド分けの設定をしているスペースではじめに伝えたスクリプトを実行すると、都度新しいスレッドが立ち上がり、非常に見づらいと感じる方もいると思います。

ここでは更新通知なので、更新通知だけのスレッドで発信したいですよね。情報が散らばると、見づらくなります。

スクリプト内にコードを追加

スレッドをまとめたい場合はしたのコードを加えてスクリプトを実行してください。スレッドは散らばらず、実行するたび、同じスレッド内にメッセージが届くようになります。

// スレッド情報
    'thread': {
        'name': 'spaces/スペース_ID/threads/スレッド_ID'
  },

まとめ

以前の仕様のスペースをお使いで、メッセージを送付するスレッドはまとめたい!という方は以下のスクリプトを使ってください。

function message_to_chat() {
    //WebhookのURLを確認して設定
  const webhook_url = 'Webhook URL';

  const message = {
    // 投稿したいメッセージに変更してください
    'text': '〇〇〇プロジェクト:シート更新しました。',
    // スレッド情報
    'thread': {
        'name': 'spaces/スペース_ID/threads/スレッド_ID'
     },
  };
  const options = {
    'method': 'POST',
    'headers' : {
      'Content-Type': 'application/json; charset=UTF-8'
    },
    'payload': JSON.stringify(message)
  };
  // Webhook URL に POST
  var response = UrlFetchApp.fetch(webhook_url, options);
  
}



GASを活用しながら、仕事では少しずつ無駄を省くことができるようになり、業務も効率よくなってきており、チームとしても仕事がしやすい環境がつくれてきている気がします。


\カスタムメニューでさらに効率化!!/

【保存版】GASでスプレッドシートのメニューをカスタマイズ!!Google スプレッドシートのカスタムメニューを活用して、日々の作業効率をアップさせましょう!この記事では、カスタムメニューの作り方から便利な活用事例まで詳しく解説します。初心者でも簡単に作れるので、ぜひチャレンジしてみてください。...

Fatal error: Uncaught JSMin_UnterminatedRegExpException: JSMin: Unterminated RegExp at byte 47225: /.source + in /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php:264 Stack trace: #0 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(150): JSMin->action(1) #1 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php(84): JSMin->min() #2 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/autoptimizeSpeedupper.php(38): JSMin::minify('/* PrismJS 1.29...') #3 /home/c1448553/public_html/one-walker.net/wp-includes/class-wp-hook.php(324): autoptimizeSpeedupper->js_snippetcacher('/* PrismJS 1.29...', '/home/c1448553/...') #4 /home/c1448553/public_html/one-walker.net/wp-includes/plugin.php(205): WP_Hook->apply_filters('/* PrismJS 1.29...', Array) #5 /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/autoptimizeScripts.ph in /home/c1448553/public_html/one-walker.net/wp-content/plugins/autoptimize/classes/external/php/jsmin.php on line 264