10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GASでスプレッドシートの内容をSlackに投稿

Posted at

目的

自分はTeamに所属していて会計をやっています。
スプレッドシートで会計の記録を管理してるんだけど一々支払いを呼びかけるの面倒臭いから自動でSlackに通知してしまおう。という目論見で開発。

GASとは?

  • Google Apps Scriptの略
  • Googleが提供するサービスをスクリプトで操作できる

Slackの設定

  • 「Manage team members」 → 「Home」 → 「Incoming WebHooks」 → 「Add Configuration」からWebhookを追加する。
  • チャンネル名の設定、WebhookURLの保管、アイコンの設定などを必要に応じて行う。

スプレッドシートの作成

スプレッドシートの中身は割愛するが、下図の該当箇所をSlackに送りたい。
名称未設定.png

GASの作成

「ツール」 → 「スクリプトエディタ」にてプロジェクト作成
作成したプロジェクトに以下を記載

//WebhookのURLとチャンネル名
var postUrl = 'hogehoge';
var postChannel = '#money';

//スプレッドシートのメッセージ取得
function getMessage(){
  //スプレッドシートのURL
  var spreadSheet = SpreadsheetApp.openByUrl('hogehoge');
  //シートの番号
  var sheet = spreadSheet.getSheets()[2];
  //取得するシートの行列(28行目、1列目、5行分、2列分)
  var messageArray = sheet.getRange(28, 1, 5, 2).getDisplayValues(); //2次元配列
  var message = new Array();
  
  //2次元配列を1次元配列に変換
  for(var i = 0; i < messageArray.length; i++){
    for(var j = 0; j < messageArray[i].length; j++){
      message.push(messageArray[i][j]);
    }
  }
  //配列を改行で連結
  var sendMessage = message.join('\n');

  return sendMessage;
}

//Main
function postToSlack(){
  //('送信するメッセージ', '送信するユーザー名', '送信するユーザーのアイコン')
  sendHttpPost(getMessage(), 'money', ':moneybag:');
}

function sendHttpPost(message, username, icon){
  //チャンネル、ユーザー名、アイコン、メッセージ内容をJsonで設定
  var jsonData = {
    "channel" : postChannel,
    "username" : username,
    "icon_emoji" : icon,
    "text" : message
  };
  var payload = JSON.stringify(jsonData);
  //送信設定
  var options = {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : payload
  };
  //POSTリクエスト
  UrlFetchApp.fetch(postUrl, options);
}

動作テスト

postToSlack()を実行する
スクリーンショット 2019-01-21 23.20.05.png

トリガーの設定

Excel VBAとは異なり、トリガーを設定することで、サーバーで自動的に実行される。

  • 「編集」 → 「現在のプロジェクトのトリガー」 → 「トリガーを追加」にて様々な設定のトリガーが追加できる。
  • 今回は毎月23日に実行されるよう設定。

まとめ

面倒だった会計処理もGASのおかげで楽になった。

10
12
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
10
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?