警告
-
2020年8月改訂のセキュアコーディング ガイドライン
に抵触する内容が含まれています。認証情報が漏洩した場合の影響を考慮して慎重に検討してください。
該当箇所:外部ライブラリ(MSAL.js)内のアクセストークン保存部分 - Moment.jsはメンテナンスモードになり、
日付処理できる代替ライブラリへの移行
が推奨されています。
代替ライブラリのひとつ Luxonについては、 kintoneカスタマイズでの導入方法の紹介記事 があります。
はじめに
この記事では、Garoonのポータル機能を利用して、次のことができるGaroonカスタマイズポートレットを紹介します。
- OneDrive内のファイルの一覧を表示する。
- ポートレットからドラッグ&ドロップでOneDriveへファイル追加する。
必要なもの
- クラウド版Garoon
- Microsoftアカウント
注意事項
- 使用しているWebブラウザーの設定によっては、サードパーティーCookieの読み取りを許可する必要があります。
完成イメージ
- Garoonのポータルに、OneDrive内のファイル一覧をリスト形式またはサムネイル形式で表示します。
-
リスト形式
-
サムネイル形式
- リスト形式またはサムネイル形式で、ファイル一覧を表示します。
- フォルダー名をクリックすると、別タブでそのフォルダーの内容を表示します(OneDriveの画面に移ります)
- ファイル名をクリックすると、そのファイルをダウンロードできます。
ポータルを表示して1時間以上経過している場合は、ダウンロードURLの有効期限が切れるためファイルをダウンロードできません。ポータル画面を再読み込みすることで、ダウンロードできます。
-
- Garoonのポータルから、ドラッグ&ドロップ、または[ファイルを追加]ボタンのクリックで、OneDriveへファイルを追加します。
- 同名のファイルがある場合は、上書きするかダイアログで選択できます。
- 同名のファイルがある場合は、上書きするかダイアログで選択できます。
システム構成
- GaroonからOAuthを用いてEntra ID V2 Endpointへサインインします。
Microsoft Authentication Library for JavaScript (MSAL.js)を利用することで、OAuthを使った認可フローを実現します。
- Azureからアクセストークンを取得します。
このアクセストークンを使って、Microsoft Graph APIを実行し、OneDriveのファイルを取得したり更新したりします。
Microsoft Graph API(以降、Graph API)は、Microsoft 365サービスの情報を利用するAPIです。
ファイル一覧を表示するフロー
- アクセストークンを使って、OneDriveのファイル情報を取得するAPI を実行します。
- OneDriveのファイル情報が返却されます。
- HTMLポートレットにファイル情報(ファイル一覧)を表示します。
ファイルを追加するフロー
- アクセストークンを使って、OneDriveにファイルを追加するAPI を実行します。
- ファイル追加後のOneDriveのファイル情報が返却されます。
- HTMLポートレットにファイル情報(ファイル一覧)を表示します。
Microsoft Entra IDの設定
Garoonから
Graph API
を利用するため、Microsoft Entra IDにアプリケーションを登録します。この設定は、管理者のみ行う作業です。利用者が個々に設定する必要はありません。
アプリケーションの作成
Azureポータル
で、Microsoft Entra IDにアプリケーションを登録します。
手順は次のページを参照してください。
GaroonポータルでOutlookの未読メール数をチェックしよう:アプリケーションの作成
- この記事では、作成するアプリケーション名を「garoon-onedrive」としています。
- アプリケーション作成後、作成したアプリケーションの概要が表示されます。
「アプリケーション(クライアント)ID」の値をメモしておいてください。
Garoonカスタマイズファイルで利用します。
Azureポータルで「Microsoft Entra ID」をクリックし「アプリの登録」をクリックしても、「アプリケーション(クライアント)ID」を確認できます。
アプリケーションの設定
作成したアプリケーションに対し、次のことを行います。
- リダイレクトURIの設定
- OAuth認証スコープの設定
手順1. リダイレクトURIの設定
「リダイレクトURI」と「暗黙の付与」設定を実施します。
手順は次のページを参照してください。
GaroonポータルでOutlookの未読メール数をチェックしよう - アプリケーションの設定(手順1. リダイレクトURIの設定)
手順2. OAuth認証スコープの設定
OAuth認証スコープを設定します。
手順は次の記事を参照してください。
GaroonポータルでOutlookの未読メール数をチェックしよう - アプリケーションの設定(手順2. OAuth認証スコープの設定)
設定するMicrosoft Graph APIのアクセス権は、以下の2つです。
- Files.ReadWrite.All
- User.Read(デフォルトで設定されている権限)
Garoonの設定
Garoonでは、次のことを行います。
- Graph APIを利用するためのプロキシAPIを設定
- ポートレットに表示する画像ファイルの、画像アセットへの追加
- HTMLポートレットの作成・カスタマイズの適用
- ポータルへの配置
なお、このカスタマイズでは、次の外部ライブラリを利用しています。
- Microsoft Authentication Library for JavaScript(MSAL)v0.1.2,
ドキュメント
- jQuery v3.3.1,
ドキュメント
- https://js.cybozu.com/jquery/3.3.1/jquery.min.js
- SweetAlert2 v8.2.1,
ドキュメント
- https://js.cybozu.com/sweetalert2/v8.2.1/sweetalert2.min.js
- https://js.cybozu.com/sweetalert2/v8.2.1/sweetalert2.min.css
- Moment.js v2.24.0,
ドキュメント
- https://js.cybozu.com/momentjs/2.24.0/moment-with-locales.min.js
- ES6-Promise v4.0.5,
ドキュメント
- https://js.cybozu.com/es6-promise/v4.0.5/es6-promise.auto.min.js
- Garoon html/css/image-Kit for Customize, ドキュメント
手順1. プロキシAPI設定
手順の詳細は
プロキシAPIの設定を追加する
を参照してください。
-
「Garoonシステム管理」画面を開きます。
-
「基本システムの管理」タブをクリックし、[API]を選択します。
-
[プロキシAPIの設定]をクリックします。
-
[追加する]をクリックします。
-
以下の内容を入力します。入力が終わったら、[追加する]ボタンをクリックして、設定を追加します。
項目 値 ステータス 「有効」を選択します。 プロキシコード GET_ONEDRIVE_PORTLET メソッド 「GET」を選択します。 URL https://graph.microsoft.com/ -
4.〜の手順と同様に、POST用のプロキシAPIを設定します。
項目 値 ステータス 「有効」を選択します。 プロキシコード POST_ONEDRIVE_PORTLET メソッド 「POST」を選択します。 URL https://graph.microsoft.com/
手順2. 画像ファイルを画像アセットへ追加
ポートレットに表示するメールアイコンの画像ファイルを、画像アセットに保存します。
手順の詳細は
画像アセットの追加
を参照してください。
-
「Garoonシステム管理」画面を開きます。
-
「各アプリケーションの管理」タブをクリックし、[画像アセット]を選択します。
-
[画像アセット一覧]をクリックします。
-
[画像アセットを追加する]をクリックします。
-
「category20.gif」と「file20.gif」の2つのファイルを登録します。入力が終わったら、[追加する]ボタンをクリックして画像を追加します。
項目 値 ファイル garoon-onedrive-portal-thumb.zip をダウンロードし、解凍したフォルダー内のファイルを追加します。 ファイルキー - downloadmore20.gifに設定する値
ONEDRIVE_ICON_DOWNLOAD - link_sub16.pngに設定する値
ONEDRIVE_ICON_LINK - category20.gifに設定する値
ONEDRIVE_ICON_FOLDER - file20.gifに設定する値
ONEDRIVE_ICON_FILE
- downloadmore20.gifに設定する値
-
画像アセット登録後の画像アセット一覧は次のようになります。
手順3. HTMLポートレットの作成・カスタマイズの適用
カスタマイズポートレットを作成します。
手順の詳細は
HTMLポートレットの設定
を参照してください。
-
「Garoonシステム管理」画面を開きます。
-
「各アプリケーションの管理」タブをクリックし、[ポータル]をクリックします。
-
[HTMLポートレット]をクリックします。
-
[HTMLポートレットを追加する]をクリックします。
-
以下の内容を入力します。入力が終わったら、[追加する]をクリックします。
項目 値 ポートレット名 任意の値を入力してください。
この記事では、「OneDriveコンテンツ表示」とします。ポートレットの内容 「テキスト」を選択します。
内容は後述の サンプルコード(ポートレットHTML) を入力してください。 -
追加した「HTMLポートレットの詳細」画面で、[JavaScript / CSSによるカスタマイズ]をクリックします。
-
次のように入力します。入力が終わったら、[設定する]ボタンをクリックして設定します。
項目 値 カスタマイズ 「適用する」を選択します。 JavaScriptカスタマイズ 次の順で指定します。 - Microsoft Authentication Library for JavaScript(msal.min.js)
Microsoft Authentication Library for JavaScript(msal.min.js)の入手方法 - https://js.cybozu.com/jquery/3.3.1/jquery.min.js
- https://js.cybozu.com/sweetalert2/v8.2.1/sweetalert2.min.js
- https://js.cybozu.com/momentjs/2.24.0/moment-with-locales.min.js
- https://js.cybozu.com/es6-promise/v4.0.5/es6-promise.auto.min.js
- カスタマイズファイル(onedrive_contents_portlet.js)
詳細は、後述の サンプルコード(onedrive_contents_portlet.js) を参照してください
CSSカスタマイズ 次の順で指定します。 - https://js.cybozu.com/sweetalert2/v8.2.1/sweetalert2.min.css
- Garoon html/css/image-Kit for Customize(grn_kit.css)
Garoonの見た目に調和するスタイルシートです。
Garoon html/css/image-Kit for Customizeの入手方法 - カスタマイズファイル(onedrive_contents_portlet.css)
詳細は、後述の サンプルコード(onedrive_contents_portlet.css) を参照してください
- Microsoft Authentication Library for JavaScript(msal.min.js)
Microsoft Authentication Library for JavaScript(msal.min.js)の入手方法
-
GitHubリポジトリ
にアクセスします。
- [Source code(zip)]からzipファイルをダウンロードします(バージョンは0.1.2を利用します)
- zipファイルを解凍します。
- 解凍したフォルダーの「out」フォルダー以下の「msal.min.js」を利用します。
Garoon html/css/image-Kit for Customizeの入手方法
-
GitHubリポジトリ
にアクセスします。
- [Clone or download]ボタンをクリックして、「Download ZIP」を選択します。
- ダウンロードしたzipファイルを解凍します。
- 解凍したファイルの「css」フォルダー以下の「grn_kit.css」を利用します。
手順4. ポータルへの配置
手順の詳細は
ポートレットの配置
を参照してください。
- 「Garoonシステム管理」画面を開きます。
- 「各アプリケーションの管理」タブをクリックし、[ポータル]をクリックします。
- [ポータルの一覧]をクリックします。
- 作成したポートレットを配置したいポータル名をクリックします。
ポータルを新規に作る場合は、 ポータルの追加を参考に作成してください。
- 左メニューのポートレット一覧から、作成したポートレット(OneDriveコンテンツ表示)を、右側のレイアウトにドラッグして配置します。
- 配置したポートレット右上の「未公開」ボタンをクリックして「公開中」に変更します。
動作確認
Office 365 OneDriveへのサインインとファイル一覧の表示
- Garoonで、カスタマイズしたHTMLポートレットを配置したポータルを開きます。
- サインインを求めるダイアログが表示されます。
OneDriveを利用しているアカウントでサインインします。
「ポップアップウィンドウをブロックする」設定がされている場合、サインインのポップアップが表示されずにエラーメッセージが表示されます。
その場合は、ブロック設定を解除した後、ポートレットの[OneDriveコンテンツ一覧を表示する]ボタンをクリックすると、サインインのダイアログを再表示できます。 - GaroonのポータルにOneDriveのファイル一覧が表示されます。
OneDriveへのファイル追加
- Garoonポータルを表示します(Garoonポータル上でOneDriveへサインイン済み)
- [ファイルを追加する]ボタンをクリックしダイアログからファイルを選択、または、追加したいファイルを[ファイルを追加する]ボタンにドラッグ&ドロップします。
- 追加対象のファイルが表示されます[追加]ボタンをクリックすると、ファイルが追加されます。
サンプルコード
ポートレットHTML
|
|
onedrive_contents_portlet.js
11行目のCLIENT_IDを、 Microsoft Entra IDの設定:アプリケーションの作成 でメモした「アプリケーション(クライアント)ID」に変更してください。
次の値は、必要に応じて変更してください。
- 27行目 FOLDER_PATH:ファイル一覧として表示するフォルダーのパスです。絶対パスで指定します。
例:フォルダーのパスがファイル > meeting > 2019なら、「/meeting/2019」を指定します。 - ポータルのファイル一覧に表示する内容
- 31行目 MAX_NUMBER_OF_DISPLAY:ファイル/フォルダー表示数です。数字で指定します。
- 33行目 UPDATE_USER:「更新者」列の表示設定です。falseを設定すると列を非表示にします。
- 35行目 UPDATE_TIME:「更新日時」列の表示設定です。falseを設定すると列を非表示にします。
- 37行目 SIZE:「サイズ」列の表示設定です。falseを設定すると列を非表示にします。
- 39行目 FOLDER:「フォルダー」列の表示設定です。falseを設定すると列を非表示にします。
- 41行目 SHOW_LOGIN_POPUP:ポートレット表示時にOneDriveへサインインするポップアップの表示設定です。falseを設定すると列を非表示にします。
Outlookの未読メール数を表示するポートレット を追加している場合、falseに設定してください。 - 43行目THUMBNAIL:サムネイル表示の設定です。falseを設定するとリスト形式で表示します。
また、サムネイル形式で表示したときの表示数は以下で設定できます。- 45行目 THUMBNAIL_COLUMNS:サムネイルの表示列数
- 47行目 THUMBNAIL_ROWS:サムネイルの表示行数
|
|
onedrive_contents_portlet.css
|
|
おわりに
この記事では、OneDrive内のファイルの一覧を表示したり、ポータル上からOneDriveへファイル追加できるポートレットカスタマイズを紹介しました。
他にもcybozu developer networkでは、さまざまな
Garoonポータルカスタマイズ
を紹介しています。ぜひ参照してください。
このカスタマイズでは次のAPIを利用しています。
- Garoon API
- Microsoft Graph API(外部サイト)
変更履歴
- 2019年12月8日
ソースコードを修正し、サムネイル画像の表示に対応しました。
それに伴ってGaroonの設定を追加しました。- プロキシAPI設定 :POSTの設定
- 画像ファイルを画像アセットへ追加 :画像ファイルの追加
このカスタマイズは、サイボウズ オフィシャルSIパートナー クロス・ヘッド株式会社による有償サポートの対象カスタマイズです。
詳細は
サイボウズ製品API開発サポート
を参照してください。
このTipsは、2019年9月版Garoonで動作を確認しています。
