中級者はじめに皆さんこんにちは。スマイルテクノロジーユナイテッド株式会社の榎本です。スクリプトに触れていただきたいと思います。皆さんの現場ではチャットサービスを使われているでしょうか。始めとするチャットサービスの普及が進んでいると思います。メインに利用しており、すでに業務に欠かせないものになっています。チャットサービスの利用が進むほど、さまざまなメッセージをチャットで受け取りたくなります。さらなる活用が期待できます。連携の二つについてやっていきます。連携はさまざまな手段が考えられますが、大きく分けて二つの方法があります。イベントデーモン(*1)として実装するそれぞれの違いについて図式化すると以下のようになりますが、連携方法によって特徴があります。通知機能を実装する方法をとります。前回実装した、バージョンへのファイルリンク作成だけでは、十分に実用的ではありません。通常、バージョンはアセットやショット等に関連付けて作成します。前回の仕様では、手作業でバージョンをアセットへリンクする必要があります。同名のバージョンが複数存在すると、どれが最新データを持っているかを確認する手間が発生するかもしれません。しては、こうした手間の掛かる作業を解消したいところです。他にも、アップロードが完了した際に実行結果を表示すると親切でしょう。今回は上記の例に則って機能を追加していくことにします。追加実装していく機能をまとめると、下記の三つになります。バージョン作成と同時にアセットを作成し、バージョン・アセット間のリンクを作成する。同名のバージョンが存在するかチェックし、なければ作成する。ある場合は、同名のバージョンの重複チェックを行い、一意であればファイルリンクを上書きし、重複があった場合はアップロードをせずスキップする。一連のアップロードが終わったタイミングで、アップロードに成功したファイルとスキップしたファイルのファイル名をまとめて表示する。連携ファイルアップローダーで大量のファイルをアップロードした時に、完了報告を受け取りたいということがあるかと思います。所定のチャンネルに完了報告のメッセージを送信するようにします。いう仕組みを利用する方法があります。送るようにしていきます。今回のツールの構成を下図に示します。100.png前回からの変更点としては、myuploader/config/config.json(以下、config.json)の追加のみです。形式(*2)で分離し、そこから読み込んでくるようにします。今回は、config.jsonに分離します。ここに併せて保存します。下記のように記述します。以下にまとめておきます。下記のように編集します。例外クラスを追加しています。設定を読み込むために用意しました。関数は、一意のエンティティを取得するために用意しました。メソッドが用意されていますが、ソースコードを見てみると一意のエンティティが取得できる仕様となっていません(*3)。関数を定義しています。メソッドを使ってエンティティを取得し、一つ以上のエンティティが取得された場合に、リストの先頭のエンティティのみを返す実装となっています。メッセージを送信すると、設定したチャンネルにメッセージが表示されます。ワークスペースとチャンネルを用意します。サイト(https://slack.com/intl/ja-jp/)の「ワークスペース」から手順に従って新規作成します。次に、メッセージの送信先チャンネルを作成します。今回は、「message_from_myuploader」というチャンネル名とします。app」をクリックしてアプリケーション作成ページに飛びます。App」をクリックします。Workspace」ボタンが表示されるのでクリックします。すると、権限をリクエストしてくるので、投稿先のチャンネルを選択して「許可する」をクリックします。