2020年05月28日
WorkatoでSlackとGoogleドライブ間のファイルアップロード連携を実装する大野 智之 Tomoyuki Ohno
Slackを利用していると、SlackをアップロードしたファイルをGoogleドライブやBoxなどのオンラインストレージにもアップロードされたら良いのに・・・と思うことはありませんか?
例えば、スマートフォンで撮影したイベントの写真をSlackだけでなく、Googleドライブにも同時にアップロードされれば、Slackから1つずつ画像をダウンロードする手間も省けます。
Workatoを利用することで、そのような処理を簡単に実現することができます。
ということで、今回はWorkatoを使って、SlackへアップロードされたファイルをリアルタイムにGoogleドライブへアップロードする処理の実装を行っていきます。
記載のないパラメータはデフォルト(初期値)のままとします。
Slackへアプリを作成する手順は、「WorkatoのHTTPコネクタ(汎用コネクタ)でSlack APIエンドポイントを利用する」に記載していますので、そちらを参照ください。
上記に加えて、OAuth & PermissionsのScopesへ次のOAuth Scopeを追加します。
User Token Scopes |
channels:history files:read |
---|
「Create a new recipe」をクリックします。
App Connectionを追加するアプリケーションを選択します。
今回は、以下のApp Connectionを追加します。
Applicationに「Slack」を選択し、「Link your account」をクリックしてSlackと連携します。
Applicationに「HTTP」を選択し、「WorkatoのHTTPコネクタ(汎用コネクタ)でSlack APIエンドポイントを利用する」を参考に設定します。
Applicationに「Google Drive」を選択し、「Link your account」をクリックしてGoogle Driveと連携します。
※連携先とするGoogle Drive(Googleアカウント)は事前に用意します。
Workatoを開き、次のようなレシピ(ワークフロー)を作成します。
まず、以下の赤枠で示した箇所の設定を進めます。
Slackコネクタを選択し、以下の通り設定を進めます。
App | Slack |
---|---|
Trigger event | New event |
Event name | file-attachment ※名称は任意ですが、Request URLに影響します。 |
Trigger condition | 有効にする |
Collapse trigger condition |
Trigger data: ( の「Channel」) Condition: equals Value: 本レシピの参照先とするSlackのチャンネルのID ※Trigger dataの値は、Datapills(Workatoのレシピ作成画面の右側に表示されるインターフェース)よりドラッグ&ドロップで指定します。(以下を参照) なお、Datapillsの詳細については、下記URLを参照ください。 https://docs.workato.com/recipes/data-pills-and-mapping.html |
なお、Slackコネクタを追加すると、Request URLが発行されます。
このURLはSlackへアプリを作成する際(Event Subscriptionを設定する際)に必要となりますので、記録(メモ)しておきます。
次に、以下の赤枠で示した箇所の設定を進めます。
最初は、Actionsが1つも定義されておらず、次のような表示になっています。
Actionsの下にある「+」をクリックします。
次に、「Action in an app」をクリックします。
以下のような表示となり、コネクタを選択することが出来るようになりますので、必要なコネクタを選択します。
コネクタを選択すると、次のようにコネクタの設定が行えるようになります。
それでは、処理の実装を引き続き進めていきます。
「JSON Parser by Workato」コネクタを追加し、次の通り設定を行います。
App | JSON parser by Workato |
---|---|
Action | parse json document |
Sample document | https://api.slack.com/events/message/file_share のJSON文字列をコピーして貼付 |
Document |
(の「Original event json」) |
ファイルがSlackへアップロードされた場合のみ処理させたいため、次の通り条件分岐を追加します。
条件分岐を追加するため、「IF condition」を選択します。
(条件分岐は2種類ありますが、今回はELSEに相当する処理は無いため、IF/ELSE conditonは使用しません)
条件分岐を追加後、追加された条件分岐に対して以下のように設定を行います。
Collapse condition |
Data field: ( の「Upload」)Condition: is true |
---|
なお、以後の処理は条件分岐の「Yes」以下に追加します。
「HTTP」コネクタを追加し、次の通り設定を行います。
App | HTTP |
---|---|
Action | Send request |
Request name | 任意の名称 |
Request |
Method: GET Request URL: ( の「URL private download」) |
Response |
Response content type: Binary Encoding: UTF-8 ※Response content typeが「Binary」のためどれでも良いですが、デフォルト値していされているUTF-8のままとします。 |
「Google Drive」コネクタを追加し、次の通り設定を行います。
App | Google Drive |
---|---|
Action | Upload small file |
File contents |
( の「Body」) |
File name |
( の「Name」) |
Parent folder |
Google Driveのアップロード先フォルダ |
「Slack」コネクタを追加し、次の通り設定を行います。
App | Slack |
---|---|
Action | Post message |
Channel ID/name |
( の「Channel」) |
Basic text |
ファイルをGoogle Driveへアップロードしました。 |
以上の設定が完了したら、「Start recipe」をクリックし、レシピを開始します。
Slack apiのアプリ設定画面を開き、Basic InformationのAdd features and functionalityを展開し、「Event Subscriptions」をクリックします。
Enable Eventsを「On」に変更し、Request URLに、WorkatoのTriggerでSlackコネクタ追加時に発行されたURLを入力します。
また、Subscribe to events on behalf of usersに「messages.channels」を追加します。
以上の設定が完了したら、「Save Changes」をクリックし、設定を反映します。
Slackクライアントを開き、ファイルをアップロードします。
ファイルがアップロードされると、Workatoが「ファイルをGoogle Driveへアップロードしました」というメッセージを返します。
続いてGoogleドライブを確認してみます。
Googleドライブでは、Slackへアップロードされたファイルを確認することができます。
以上のように、Workatoでは、SlackとGoogleドライブ間のファイルアップロード連携も簡単に実装することができます。
SlackとGoogleドライブなどのオンラインストレージをより活用されたい、そのようなソリューションをお探しの方は、是非Workatoをご検討ください。
リックソフトではお得なキャンペーンを実施中です。
9月末までレシピを無料で利用できます。
製品について詳しくはこちらをご覧ください。
Workato製品情報 Slack導入支援サービス本情報はブログを公開した時点の情報となります。
ご不明な点はお問い合わせください。
アトラシアン社ではサポート範囲外となっているサードパーティ製のアドオンをリックソフトのサポートではサポートします。
リックソフトのサポートは開発元が提供するサポート以上の価値があります。
ツールを導入しただけでは成功とはいえません。利用者が効果を感じていただくことが大切です。独自で制作した各種ガイドブックはツール活用を促進します。
リックソフトからライセンス購入を頂いたお客様にはガイドブックを無料進呈いたします。
ツール操作の研修だけでなく「ウォータフォール型開発」「アジャイル型開発」のシミュレーション研修も提供。
日本随一の生産性向上にも効果のある研修サービスです。
リックソフトからライセンス購入を頂いたお客様には無料招待や割引特典がございます。