「Google Apps Script」タグアーカイブ

Google Drive のファイルをフォルダごとコピーする


Google Apps Scriptを使用してGoogle Driveフォルダのコンテンツを他のフォルダにコピーするコードです。

続きを読む Google Drive のファイルをフォルダごとコピーする

Backlog の通知を Slack に連携するスクリプト


Nulab Backlog の通知 を Slack に連携するスクリプトを紹介します。 Google Apps Script で動きます。

続きを読む Backlog の通知を Slack に連携するスクリプト

Bitbucket と Slack を連携させる方法


Bitbucket で Pull Request(プルリクエスト) や コメント、 Issue(イシュー) が追加・作成されたときに Slack に連携するコードを書きました。

経緯

Bitbucket で Issue 作成など が行われた際に 外部 に連携する仕組みは Bitbucket で提供されています。 それは 各プロジェクトの設定画面 Webhooks から 設定ができます。

Slack でも 設定画面から 簡単に Bitbucket と連携することができました。 しかし、 そのとき (頃) は Bitbucket の push しか Slack が対応していませんでした。

push よりも Issue 作成や Pull Request や コメント を連携してほしい と思った私は、 Google Apps Script を使って Bitbucket と Slack を繋ぐスクリプトを作ったのでした。

コード

本当なら オブジェクトモデルを作って Factory を作ってとやりたいところだったのですが、 業務が忙しくてそんなことやってられなかったため 間に合わせの品質でコードを作りました。

下記のスクリプトを Google Apps Script で作成し、 メニュー Publish から Deploy as web app をクリックして公開します。 すると ウェブアプリ の URL が表示されるので、 それを Bitbucket の設定画面から Push 先 の URL として登録します。

Bitbucket で何らかの操作が行われるたびに Google Apps Script の処理が実行され、 Slack に 投稿されるようになります。

(コードは Github Bitbucket To Slack Gas にもあります。 Contribute 歓迎です。)

まず Bitbucket から通知(Post Request)が来ると、 doPost が実行されます。 そして Post されたデータから、 Slack への ペイロード データ を作成します。 上では createSlackMessage がその処理を行っています。

createSlackMessage では、 届いたデータから 操作内容を割り出し、 通知したい情報をまとめます。

送信したいデータがまとまったら、 Slack に送信します。

注意点

createSlackMessage では、 Issue の場合、 Pull Request の場合などパターン分けしていますが、 上で分けてある以上に 細かくパターンが分かれます。 今回は私の業務上必要だろうと思われる分岐にとどめています。 そのパターンを正確に判断するには Bitbucket から送信されるヘッダの中を確認するのがいいのですが、 Google Apps Script ではリクエストヘッダを確認することができないため ペイロード部分のデータで分岐を行っています。

実際のところ Pull Requestapproved のあたりはまだ検証中のため、 正しく判別できているという保証がないです。

もし、 Heroku や AWS 、 その他レンタルサーバ など 自由に使えるサーバがある場合は、 PHP, Ruby 等 で作成したほうが リクエストヘッダも使えて便利だと思います。


Google Apps Script : 営業日だけ処理を実行したい場合


Google Apps Script で 営業日だけ処理をしたいということはないでしょうか。 営業日のみ朝のメール配信をしてほしい、そのほかにも、 週末だけ処理をしたいが金曜が祝日の場合はその前の日に処理をするなどがあります。 そういった祝日を考慮する場合の Script を考えました。

トリガを設定して平日にスクリプトが実行されるようにした上で、以下のコードを追加します。

祝日・休日を除いて処理をする

別の書き方をすれば、営業日のみ処理をする場合のことです。 Google Calendar を利用して 祝日を取得します。

処理の始めに次のコードを追加します。

日曜と土曜の場合は処理を中断し、 Google が用意している日本の祝日カレンダーに祝日予定が入っている場合にも処理を中断します。 曜日の選択はトリガの設定でも可能です。

もちろんこれを boolean を返すメソッドにするのもいいと思います。

もし、会社で 創業記念日・設立記念日 なども休みになっている場合は、 会社の特別休日カレンダーを作成して 処理を追加します。 getCalendarById の引数となるカレンダーIDは、 Google Calendar の該当のカレンダーについてカレンダー設定の画面を開くと確認できます。

続きを読む Google Apps Script : 営業日だけ処理を実行したい場合

毎日自動で Slack に天気予報を投稿するためのスクリプト


Slack に 毎日自動で天気予報を投稿するスクリプトを書きました。 Google Apps Script を使いました。 Google Apps Script なので、 祝日または休日だったら投稿しないという分岐もできます。 (参考: 営業日だけ処理を実行したい場合)

方針

  • 天気予報の取得は Open Weather Map を使用する。
  • Script は CoffeeScript を使用して記述する。
  • Slack へは、 Incoming WebHooks を利用して投稿する。
  • Google Apps Script を使って自動で定期的に実行します。

準備

Slack で Incoming Webhooks の URL を取得しておきます。

続きを読む 毎日自動で Slack に天気予報を投稿するためのスクリプト