該当箇所:外部サービス(OAuth.io)内のアクセストークン保存部分
Index
はじめに
Box は、Box Inc. が提供するクラウドコンテンツ管理サービスです。
cybozu developer network では Box と連携した Box for kintone プラグインを公開していますが、今回は Garoon と連携する便利なカスタマイズを 2 件紹介します。
- ポートレットのカスタマイズ
Garoon のログインユーザーに紐づく Box アカウントのフォルダーを表示します。
Box で管理しているファイルを Garoon から閲覧できるようになります。 - スケジュールのカスタマイズ
予定に紐づく Box Notes をボタンひとつで作成・表示します。
Box Note を作っておけば、打ち合わせなどの議事録のメモ帳として使えるので、議事録管理もかんたんです。
必要なもの
完成イメージ
ポートレット
Box アカウントのフォルダー一覧を表示するポートレットです
スケジュール
予定メニュー連携を使って、特定の予定メニューのときに、予定の詳細画面で Box Note を作成・表示します。
Box Note の作成
予定の詳細画面の[Box Noteを追加する]ボタンをクリックすると、予定のタイトルと同じファイル名で Box Note を作成します。
- Box Note は、ひな形になる Box Note をコピーして作成されます。
- Box Note は、議事録を作成する人が作成してください。
共同で編集したい場合は、作成した Box Note の共有リンク設定を、編集権限付き共有リンクに変更してください(参考:Box Notes の共有)。
予定に紐づく Box Note の表示
予定に紐づく Box Note が作成されていれば、予定の詳細画面に Box Note の内容を表示します。
- [Box で編集する]ボタンをクリックすると、別タブでその Box Note が表示され内容を編集できます。
- [Box noteの連携削除]ボタンをクリックすると、予定と Box Note の紐付けが解除されます。
※ 連携を解除しても、作成した Box Note は削除されません。
※ 繰り返し予定では、同じ Box Note が表示されます。
システム構成
スケジュールカスタマイズにおいて、Garoon と Box の関係は次のようになっています。
- Box に対する OAuth のフローは、OAuth.io というサービスを利用して実行し、API 実行に必要なアクセストークンを取得します。
- OAuth.io 経由で取得したアクセストークンを利用して、Box のAPIを実行します。
注意事項
- このカスタマイズには、クラウド版 Garoon の環境が必要です。
- スケジュールのカスタム項目(additionalItems)を利用するカスタマイズは、同時に適用できません。
- カスタマイズプログラムは、その動作を保証するものではありません。
カスタマイズプログラムの技術的なサポート等は行っていません。
ポートレットのカスタマイズ
ポートレットのカスタマイズは、Garoon の設定のみ行います。
Garoon の設定
設定には、Garoon 管理者権限が必要です。手順の詳細は「HTMLポートレットの設定」をご参照ください。
手順1. カスタマイズの適用
- Garoon システム管理画面を開きます。
- [各アプリケーションの管理]タブをクリックし、[ポータル]をクリックします。
- [HTMLポートレット]をクリックします。
- [HTMLポートレットを追加する]をクリックします。
- 以下の内容を入力します。入力が終わったら、[追加する]をクリックします。
項目 値 ポートレット名 任意の値を入力してください。
この記事では「Box 連携」とします。ポートレットの内容 - 「テキスト」を選択します。
- 「内容」には、下記のポートレット HTML を貼り付けます。
ポートレットHTML
手順2. ポータルへの配置
手順の詳細は「ポートレットを配置する」をご参照ください。
- Garoon システム管理画面を開きます。
- [各アプリケーションの管理]タブをクリックし、[ポータル]をクリックします。
- [ポータルの一覧]をクリックします。
- 作成したポートレットを配置したいポータル名をクリックします。ポータルを新規に作る場合は、「ポータルの追加」を参考に作成してください。
- 左メニューのポートレット一覧から、作成したポートレット(Box 連携)を、右側のレイアウトにドラッグして配置します。
- 配置したポートレット右上の[未公開]ボタンをクリックして「公開中」に変更します。
スケジュールのカスタマイズの設定
スケジュールのカスタマイズでは、Box、OAuth.io および Garoon の設定を行います。
Box の設定
Box では、以下の設定を行います。
- テンプレートとする Box Note の準備
- OAuth の設定
手順1. ひな形 Box Note の準備
予定に紐づく Box Note の元となる、ひな形 Box Note を用意します。
- Box にログインします。
- 任意のフォルダーを開き、[新規]ボタンをクリックします。
- [テンプレート使用の Box Note]を選択します。
- 新規ウィンドウが表示されます。任意のテンプレートを選択し、[作成]ボタンをクリックします。
この記事では、Box が用意している「ミーティングアジェンダ」を利用します。
- Note が作成されます。作成された Note の URL より、Note ID(「notes/」以降の値)を確認します。
例: URL が https://app.box.com/notes/xxxxxx のとき、Note ID は xxxxxx です。
※ Note ID は、Garoon カスタマイズに利用するので、メモしておいてください。
- サンプルデータが入力されているので、不要な部分を削除しておきます。
手順2. OAuth の設定
OAuth による認可を行うための「クライアントID」と「クライアント機密コード」を発行します。
- Box 開発者コンソール にログインします。
- [アプリの新規作成]をクリックします。
- [カスタムアプリ]を選択し、[次へ]ボタンをクリックします。
- [標準OAuth 2.0(ユーザー認証)]を選択し、[次へ]ボタンをクリックします。
- アプリの名前をつけます。この記事では「Garoon-Schedule」としています。
入力が終わったら、[アプリの作成]ボタンをクリックします。
- 作成したアプリが表示されます。左サイドバーから[構成]を選択します。
- 「OAuth 2.0リダイレクトURI」と「CORSドメイン」にそれぞれ以下の値を入力します。
- OAuth 2.0リダイレクト URI:https://oauth.io/auth
- CORS ドメイン:https://oauth.io
- 「OAuth 2.0資格情報」の「クライアントID」と「クライアント機密コード」を確認します。
※ これらの値は、OAuth.io の設定に利用するので、メモしておいてください。
OAuth.io の設定
Garoon と Box 間の OAuth のフローを実現するため、OAuth.io にアプリを登録します。
- OAuth.io にログインします。
- 左サイドバーの[Default app]をクリックします。メニューが表示されるので、[New app]をクリックします。
- 「Application name」に作成するアプリ名を入力します。この記事では「Box」としています。
入力が終わったら、[Create]ボタンをクリックします。
- 新しいアプリが作成されます。
※「App Keys」に表示される「Public Key」は、Garoon カスタマイズに利用するので、メモしておいてください。
- 「Domains & URLs whitelist」に、https://{subdomain}.cybozu.com/ を入力し、Enter で確定します
※ {subdomain} は利用している .com 環境に合わせて変更してください。
- [Save Changes]ボタンをクリックして、保存します。
- 左サイドバーから、[Integrated APIs]を選択します。
- [Add APIs]ボタンをクリックします。
- 検索バーに「box」と入力します。結果の一覧が表示されるので、「Box」を選択します。
- Box の設定でメモしておいた「クライアントID」と「クライアント機密コード」を入力します。入力が終わったら、[Save changes]ボタンをクリックして保存します。
- client_id:クライアントID
- client_secret:クライアント機密コード
Garoon の設定
Garoon では、以下の設定を行います。
- BOX API を利用するためのプロキシ API を設定
- 予定連携メニュー
- スケジュールカスタマイズの適用
なお、このカスタマイズでは、次の外部ライブラリを利用しています。
- jQuery v3.4.1, ドキュメント
- https://js.cybozu.com/jquery/3.3.1/jquery.min.js
- oauth-js v0.6.2, ドキュメント
- Garoon html/css/image-Kit for Customize, ドキュメント
手順1. プロキシ API 設定
ノート登録用と共有リンク作成用のふたつのプロキシAPIを設定します。
手順の詳細は「プロキシAPIの設定」をご参照ください。
- Garoon システム管理画面を開きます。
- [基本システムの管理]タブをクリックし、[API] を選択します。
- [プロキシAPIの設定]をクリックします。
- [追加する]をクリックします。
- ノート登録用のプロキシAPIを設定します。
以下の内容を入力します。入力が終わったら、[追加する]ボタンをクリックします。
項目 値 ステータス 「有効」を選択します。 プロキシコード copyNote メソッド 「POST」を選択します。 URL https://api.box.com/2.0 - 4.〜の手順と同様に、共有リンク作成用のプロキシAPIを設定します。
項目 値 ステータス 「有効」を選択します。 プロキシコード createSharedLink メソッド 「PUT」を選択します。 URL https://api.box.com/2.0
手順2. 予定メニュー連携
予定を登録するときに選択する「予定メニュー」に連携して、スケジュール詳細画面の「メモ」の下に行を追加します。
手順の詳細は「予定メニュー連携を追加する」をご参照ください。
- Garoon メニュー右の歯車アイコンをクリックし、[Garoonシステム管理]を選択します。
- [各アプリケーションの管理]タブを選択し、[スケジュール]を選択します。
- [予定メニュー連携]を選択します。
- [予定メニュー連携を追加する]をクリックします。
- 次の内容を入力します。入力が終わったら、[追加する]ボタンをクリックします。
項目名 設定値 予定メニュー名 任意の値を選択します。
この記事では「打合」メニューが選択されたときに表示したいので、「打合」とします。ポートレット 下記のHTML を貼り付けます。
ポートレットHTML
手順3. カスタマイズファイルの適用
カスタマイズグループを作成し、スケジュールのカスタマイズファイルを適用します。
手順の詳細は「スケジュールのカスタマイズ」をご参照ください。
- Garoon メニュー右の歯車アイコンをクリックし、[Garoonシステム管理]を選択します。
- [各アプリケーションの管理]タブを選択し、[スケジュール]を選択します。
- [JavaScript/CSSによるカスタマイズ]を選択します。
- [カスタマイズグループを追加する]をクリックします。
- 次の内容を入力します。入力が終わったら、[追加する]ボタンをクリックします。
項目名 設定値 カスタマイズ 「適用する」を選択します。 カスタマイズグループ名 任意の値を入力します。
今回は「Box 連携」とします。適用対象 カスタマイズを適用するユーザー・グループを選択します。 JavaScript カスタマイズ 次の順で指定します。 - https://js.cybozu.com/jquery/3.4.1/jquery.min.js
- oauth.min.js ※1
- bundled_index.js
詳細は、「サンプルプログラム」をご参照ください。
CSS カスタマイズ Garoon の見た目に調和するスタイルシートである Garoon html/css/image-Kit for Customize を利用します。
「grn_kit.css」※2 を指定します。
※1: oauth.min.js の入手方法
- https://github.com/oauth-io/oauth-js/releases/tag/0.6.2 にアクセスします。
- Source code(zip) をクリックし、zip ファイルをダウンロードします。
- ダウンロードした zip ファイルを解凍します。
- 解凍したファイルの「dist」フォルダー以下の「oauth.min.js」を利用します。
※2 Garoon html/css/image-Kit for Customize の入手方法
- https://github.com/garoon/css-for-customize にアクセスします。
- [Clone or download] ボタンをクリックして、「Download ZIP」を選択します。
- ダウンロードした zip ファイルを解凍します。
- 解凍したファイルの「css」フォルダー以下の「grn_kit.css」を利用します。
サンプルプログラム
サンプルプログラムでは、IE などの古いブラウザで対応していない JavaScript のバージョン(ES2015 以上)の記法を利用しています。
そのため、webpack を使って、IE でも動作するように、ライブラリの組み込みやプログラムの構文変換を行う必要があります(webpack の解説記事はこちら)。
※ webpack を実行するには、Node.js とnpm を扱える環境が必要です。
- Node.js 公式サイトからインストーラをダウンロードします。
このカスタマイズでは、Node.js のバージョン 10 における webpack の実行を確認しています。 - ダウンロードしたインストーラを実行し、画面に従ってセットアップを行います(Node.js をインストールすると、自動で npm もインストールされます)。
webpack の実行手順
- https://github.com/garoon/garoonBox にアクセスします。
- [Clone or download] ボタンをクリックして、[Download ZIP]を選択します。
- ダウンロードした zip ファイルを解凍します。
- 解凍したファイルの「src」フォルダー下の「index.js」を開き、次の値を修正します。
8行目 OAUTHIO_PUBLIC_KEY:「OAuth.io の設定」でメモした Public Key
10行目 BOX_TARGET_FILE_ID:「Box の設定 - 手順1. ひな形 Box Note の準備」でメモした Note ID - ターミナルで、解凍したフォルダーに移動します。
$ cd garoonBox-master
- 次のコマンドで、必要なライブラリをインストールします。
$ npm install
- webpack を実行します。
$ npm run webpack_prod
- 生成された dist フォルダー以下の bundled_index.js をGaroon カスタマイズに利用します。
動作確認
ポートレット
- Garoon で、カスタマイズしたHTMLポートレットを配置したポータルを開きます。
- Box ポートレット上のログインボタンをクリックし、Box のアカウント情報を入力してログインします。
次の画面が表示される場合は、雲のアイコンを操作します。
- Garoon のポータルに Box のファイル一覧が表示されます。
スケジュール
- Garoon スケジュールで、予定を登録します。
このとき、「タイトル」項目の予定メニューで「打合」(「Garoon の設定 手順2. 予定メニュー連携」で設定したメニュー名と同じ値)を選択します。
- 登録した予定をクリックし、予定の詳細画面を表示します。
- 「打合」の[Box Noteを追加する]ボタンをクリックします。
- Box へのログインを求めるウィンドウが表示されます。Box のアカウント情報を入力してログインします。
- [Box へのアクセス許可]をクリックします。
- 予定の「タイトル」と同じ名前の Box Note が Box に作成されます。
作成された Box Note は、Garoon の予定詳細画面に表示されます。
※ Box のログインを求められる場合は、Box のアカウント情報を入力してログインしてください。
おわりに
この記事では、Box 内のファイル一覧のポータル表示や、スケジュールに紐づく Box Note を作成・表示するポートレットカスタマイズを紹介しました。
他にも cybozu developer network では、様々な Garoon ポータルカスタマイズや Garoon スケジュールカスタマイズを紹介しています。ぜひご参照ください。
このカスタマイズでは、次の API を利用しています。
- Garoon API
- Box API(外部サイト)
このTipsは、2019年9月版 Garoonで確認したものになります。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。