【Google Apps Script(GAS)】スプレッドシート指定セルの値をSlack投稿する

スポンサーリンク
オンラインプログラミングスクール受講者数No.1!
最短4週間でGASをマスターできる
Google Apps Scriptコース』開講中!
もれなくUI/UX、Webディレクションのカリキュラムがもらえる『新年のプレゼントキャンペーン』を1月24日まで実施中

今回は、スプレッドシートの指定セルに記載された内容をSlackに投稿する方法についてご紹介します。

スプレッドシートに記載された情報をすぐに把握・共有したい場合などに便利です。

スポンサーリンク
スポンサーリンク

スプレッドシートの作成

Webhook URLの取得

まず、Slackにログインしているブラウザで下記URLにアクセスします。

Get Started
Try Slack for free with your teammates. All it takes is an email address to get started.

次に画面内の「Post to Channel」のところで投稿したいチャンネルを指定し、

Add Incoming WebHooks integration

をクリックすると別の画面へ遷移します。

遷移した画面の

Webhook URL

の部分にURLが生成されているので、それをコピーしておきます。

スクリプトの作成

次に、スクリプトエディタのスクリプトファイルへ下記のサンプル1のように記述します。

また今回のスクリプトについてですが、

編集されたセルがA列の最終行かどうかを判定し、A列最終行の内容をスラックへ投稿

します。

こうするのは、必要な列以外の情報がいちいちスラックへ投稿されてしまっては少々鬱陶しいからです。

・サンプル1

function msgSlack() {

var sh = SpreadsheetApp.openById(‘[スプレッドシートのIDを記載]’);

var last_row = sh.getLastRow(); 

var str = sh.getSheetByName(‘シート1’).getRange(last_row,1).getValue(); //「イベント一覧シート」の、スプレッドシートのA列最終行に入力されている内容を取得

var Ash = SpreadsheetApp.getActiveSheet(); 

var rng = Ash.getActiveCell();

var name = ‘Hello!’; //投稿時に表示される名前を指定

var icon = ‘:joy:’; //投稿時に表示されるアイコンを指定

if(rng.getColumn()==1 && rng.getRow()==last_row){ //アクティブセル(=編集されたセル)がA列最終行かを判定し、スラックへの投稿を実行

var payload = {
‘text’: str, //投稿内容
‘username’: name, //投稿時に表示される名前
//’channel’ : ”, //投稿するチャンネル
‘icon_emoji’: icon, //投稿時に表示されるアイコン
}
var options = {
‘method’:’post’,
‘contentType’: ‘application/json’,
‘payload’: JSON.stringify(payload),
}
var webhook_url = ‘[webhook_urlを記載]’; //投稿するスラックのURL
UrlFetchApp.fetch(webhook_url, options);

}
}

サンプル1について要所をご紹介しますと、

var name = ‘Hello!’;

では投稿時にSlack上で表示される名前を指定します。

var icon = ‘:joy:’;

では投稿時にSlack上で表示されるアイコンをアイコン名で指定します。

こちらはSlackを投稿する際にコメントを書くボックスの、一番右にあるアイコン一覧より好きなアイコンを選んで名前を指定します。

また、

var payload = {}

内の、’channel’には投稿するチャンネル名を記載しますが、無くても投稿できるようであるため、今回はコメントアウトしています。

トリガーの作成

今回のプロジェクトトリガーは実行が今回の関数名の「msgSlack」、イベントが「スプレッドシートから」「編集」を指定して保存をクリックします。

これでスプレッドシートのA列の最終業のセルが編集された場合、Slackへ投稿されるようになります。

タイトルとURLをコピーしました