見出し画像

非エンジニアがGoogleスプレッドシートとslackを連携して自動で通知する!間接業務をハックしよう!

弊社では様々な業務でGoogleスプレッドシートとSlackを使い倒しております。この2つを連携することで、かなりの業務で自動化の恩恵が受けられる…!ということで、GASで連携を実現する方法と、ノンコーディングで連携を実現する方法を実際にやってみました!

この記事はこんな人におすすめ!
・スプレッドシートで管理、確認、催促作業を行っている
・別のアプリケーションにコピペする、などのノンコア業務が多い
・業務を自動化したいけど、コーディングなんてできない

1. どんな業務が楽になるのか

・スプレッドシート上で入力作業や確認作業を依頼する
・作業の進捗を確認するためにスプレッドシートを何度も見に行く
・異常がありそうな内容をピックアップして確認する、など

上記のようなフロー、日々の業務を思い出してみると、結構行っていませんか?面倒だし、面倒であるが故に人手で行っているとミスが起こることも。今回は上記のフローが発生する営業ヨミ管理業務を自動化しました。

・営業ヨミ管理の概要
スプレッドシート上で顧客と受注ヨミ、次回アポ日やネクストアクションを管理しています。営業はアポの度にこの表を更新していきます。
私は暇があればこのスプレッドシートを見にいってリスク検知(急に受注確度が下がったものはないか、あった場合はリカバリーをどうするつもりなのかの確認とすり合わせ)を行っていました。
とはいえ、毎日張り付き続けるわけにもいきません。だんだんとリスク検知が機能せず、耳に届いた頃には手遅れになっている、という状態になっていました。

スクリーンショット 2020-03-27 19.20.58

↑ こんな感じのイメージ。緑の部分を営業が更新していく

・実現したい自動化の内容
ヨミ変更の入ったレコードの内容を自動でSlackに通知する
これによって変更タイミングのみをキャッチし、「??」となった場合のみその担当に問い合わせることでリスク検知を実現しようという試みです。


2. Google Apps Scriptで実装してみる

いわゆる"GAS"で頑張って実装してみようと思い立ち、下記の記事を参考に設定してみました。
(コーディングできないので参考にならない!という方は、3. ノーコーディングで実装してみるまで読み飛ばしてください!)

  2-1. Slackの準備

Slackの管理画面から、「Configure apps(app管理)」をクリック

スクリーンショット 2020-03-27 19.42.35

「Incoming WebHooks」を検索してクリック

スクリーンショット 2020-03-27 19.48.39

「Add to Slack(設定を追加)」をクリック

スクリーンショット 2020-03-27 19.50.59

メッセージを送りたいチャンネルを選択して「Add Incoming WebHooks integration(着信Webフックインテグレーションの追加)」をクリック。

スクリーンショット 2020-03-27 19.53.12

遷移先の画面でWebhook URLを取得します。(下部の入力項目でアイコンや名前をカスタマイズできます)

スクリーンショット 2020-03-27 20.03.47

これでSlackの準備はOK!

  2-2. GASを書く!

該当のスプレッドシートの「ツール」メニューから「スクリプトディタ」を開く。

スクリーンショット 2020-03-27 20.10.27

下記のコードをセット!

var postText;
/*
** GoogleSpreadSheetの変更をSlackに通知する関数
*/
function postSheetChange(){

//slackに通知する文字列を作成
createSendMessage();
//slackに通知する文字列を設定
var postText = this.postText;
//textをslackに通知する関数を呼び出す
postSlack(postText)
}

/*
** textをslackに通知する
*/
function postSlack(text){
 var url     = "https://hooks.slack.com/services/XXXXXXXXXXXX"; // WebhookURL
 var options = {
   "method" : "POST",
   "headers": {"Content-type": "application/json"},
   "payload" : JSON.stringify({
     "channel" : "hogehoge", // 通知先チャンネル名
     "text" : text,
})
};
UrlFetchApp.fetch(url, options);
}

/*
** Slackに返す文字列を生成
*/
function createSendMessage(){
 var postText;
 var notifySheet = SpreadsheetApp.getActiveSheet();
 //アクティブセルを取得する
 var myCell = notifySheet.getActiveCell();
 //アクティブセルがD列の場合(ヨミ)のみ通知する
 if(myCell.getColumn() == 4){
   var rowNum = myCell.getRow();
   this.postText =
     "ヨミが変更されました\n" +
     "顧客名  :" + notifySheet.getRange("B" + rowNum).getValue() + "\n" +
     "担当   :" + notifySheet.getRange("C" + rowNum).getValue() + "\n" +
     "ヨミ    :" + notifySheet.getRange("D" + rowNum).getValue() + "\n" +
     "金額   :" + notifySheet.getRange("E" + rowNum).getValue() + "\n" +
     "請求月  :" + notifySheet.getRange("F" + rowNum).getValue() + "\n" +
     "次回アポ :" + notifySheet.getRange("G" + rowNum).getValue() + "\n" +
     "ネクストアクション:\n" + 
       notifySheet.getRange("H" + rowNum).getValue();
}
}



トリガー設定から、イベントを「スプレッドシート」「値の変更」とし「postSheetChange」を実行するよう設定すれば完了!

スクリーンショット 2020-03-30 20.29.24

実行してみるとしっかり実行されました。

スクリーンショット 2020-03-30 20.38.08


3. もっと簡単に、ノンコーディングで実装してみる

結構頑張っていろいろやってみたのですが、最終的にはエンジニアの手を借りることになりました…。これだとシートの仕様を変更しちゃう度に、エンジニアにコードをいじってもらわないといけない。

と、いうことで、ここからが本番。弊社で開発したツールを使って、ノンコーディングでアプリケーションの連携+業務自動化を実現してみます。

◆ 連携したいアプリケーションを選択する

ヨミ表(スプレッドシート)と通知先(Slack)を選択

スクリーンショット 2020-03-30 20.45.09

◆ フローを開始するトリガーとその後のアクションを選択する

今回はヨミ表が変更されたら(トリガー)、ヨミ表の値を取得して(アクション)、Slackに通知するため
・トリガー:値の変更
・アクション:範囲を指定して取得する
を選択する。

スクリーンショット 2020-03-30 21.03.27

◆ 該当のシート選択まで完了したら、トリガーとアクションの範囲を設定

今回はヨミが更新されたら(D列の変更がトリガー)、変更が加えられた行の値を取得したいので、
・トリガー範囲:D:D
・取得する範囲:変更したセルの行

スクリーンショット 2020-03-31 10.26.23

これでスプレッドシートの変更は完了!


◆ Slackのアクションを設定する

スプレッドシートで取得したデータをSlackに通知するため、「メッセージを送信する」を選択。

スクリーンショット 2020-03-31 14.38.08

◆ Slackの通知先のチャンネルを設定

スクリーンショット 2020-03-31 14.42.46

◆ Slackのメッセージを設定

スプレッドシートで取得したデータ(ヨミ変更したセルの行)を使ってメッセージを設定します。カラム単位でメッセージに反映することが可能!

スクリーンショット 2020-03-31 14.47.39

◆ 実行中に設定して完了!

スクリーンショット 2020-03-31 14.51.30

テストしてみるとGASと同様に通知されました!

スクリーンショット 2020-03-31 14.53.56

およそ3分で自分1人で設定完了!スプレッドシートの仕様を変更しても、「取得するデータ」「送信するメッセージ」を少し編集すれば対応可能!

今回のケース以外にも、
・salesforceとマネーフォワードの連携
・スプレッドシートとクラウドサインの連携
・GmailとGoogle Driveの連携

などが簡単に実現できます!

「興味がある!」「使ってみたい!」という方、「こんなアプリケーション同士の連携はできないのか?」「こういうアプリケーションを使っているんだけど、どう連携したら業務が楽になるか?」といったご相談がある方、是非下記のページからお問い合わせください!

お問い合わせはこちらから!


自動化のお困りごとを解決するためのツール進化に活用させていただきます!