カテゴリー内の他の記事

Google Apps ScriptからOAuth 2.0でkintone APIを利用する

フォローする

(Author : Fuji Business International Mamoru Fujinoki)

はじめに

共通管理メニュー内の外部連携で新たにOAuthクライアントの設定ができるようになりました。
今回は、Google Apps Script(以下GAS)のチュートリアルを参考に、OAuth 2.0の承認を経て、kintone APIでデータを取得するサンプルコードを作成します。
機能としては、kintone APIより取得したメッセージをGoogle Docに書き込み、GmailでGoogle Docへのリンクを送信するサンプルを作成します。
尚、コードを簡素化するため、OAuth 2.0認証にGASのライブラリを利用します。

cybozu.comのOAuthクライアントについてのドキュメントはこちらです。

開発手順

  1. kintoneアプリの開発
  2. OAuth2ライブラリの設定
  3. OAuthクライアントの設定
  4. GASアプリの開発
  5. 動作確認

1. kintoneアプリの開発

画面を参考にGoogle Docに送信するメッセージを入力するフィールドを設定します。

フィールドの種類 フィールド名 フィールドコード
文字列(1行) メッセージ message

 

OAuth_app_sample.png

「フォームを保存」し、「アプリを更新」します。

kintoneアプリの設定は以上です。

2. OAuth2ライブラリの設定

  1. https://script.google.com/にて、Google Suite Developer Hubにお持ちのGoogle アカウントでログインします。

  2. 「新規スクリプト」をクリックして、GASのエディターを表示します。
    create_new_script.png

  3. プロジェクト名を適当に入力し、「リソース」メニューから、「ライブラリ」を選択します。
    GAS_editor.png

  4. ライブラリのスクリプトID:
    1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
    を入力し、「追加」ボタンでライブラリを追加します。
    最新のバージョンを選択して、設定を保存します。(詳細はこちらを参照してください。)
    library_settting.png

3. OAuthクライアントの設定

kintoneアプリのcybozu.com共通管理ページより、外部連携設定画面にて、OAuthクライアントの追加をクリックします。

add_OAuthClient.png

リダイレクトエンドポイントは次の形式で設定します。

https://script.google.com/macros/d/{スクリプトID}/usercallback

今回作成したスクリプトIDは、GASエディターのファイルメニューの「プロジェクトのプロパティ」より、取得します。

scriptId.png

クライアント名とリダイレクトエンドポイントを入力し、「保存」すると以下の情報が、自動生成されます。

  • クライアントID
  • クライアントシークレット
  • 認可エンドポイント
  • トークンエンドポイント

set_OAuthClientInfo2.png

連携利用ユーザーの設定をクリックし、API利用を許可するユーザーを選択し、設定を保存します。

set_user.png

user_select.png

以上でOAuthクライアントの設定は終了です。

4. GASアプリの開発

GASのアプリは、こちらのチュートリアルを参考に開発します。
アプリの機能:

  1. OAuth 2.0 でkintone APIへのアクセスを認証する。
  2. kintone APIより、メッセージを取得する。
  3. 「Hello, World!」という名前で、Google Docを作成する。
  4. Google Docのボディーにkintoneからのメーセージを書き込む。
  5. GmailでGoogle Docへのリンクを送信する。

OAuth 2.0 の認証に関しましては、上記で設定したOAuth2 for Apps ScriptというGASのライブラリを利用します。

4.1. GASのコーディング

以下を参考にコーディングします。

4.2. コードの解説

doGet関数は、GASコードを後ほどウェブアプリケーションとして実行した際に最初に自動的に呼び出される関数です。
OAuth2.0 認証サービスを生成し、すでに承認されていれば、アクセストークンを引き渡し、kintone APIよりデータを取得する関数を呼び出します。
まだ、認証されていない場合には、承認リンクをブラウザに表示します。

OAuth2.0ライブラリを使って、OAuth2.0承認サービスの生成を行います。上記で設定したOAuthクライアントの各種情報を設定しています。

PropertiesService.getScriptProperties()にて、承認トークンの設定を保存するサービスの指定をしています。
スコープの値は、こちらの記事で確認してください。

コールバック関数は、authCallbackを指定します。

ブラウザから承認リンクをクリックした場合にkintoneへ認可リクエストを送信した際に処理されるコールバック関数です。ライブラリ内で認可コードを取得して、アクセストークンを要求・取得する処理が実行されます。

承認されるとkintone APIを実行する関数を呼び出し、ブラウザに「Success」と表示されます。
また、承認が拒否された場合には「Denied」が表示されます。

取得したアクセストークンをヘッダーに設定して、kintone APIでアプリのデータを取得します。URLには、アクセスしたいアプリのIDとレコード番号を含めて指定します。

取得したデータをJSON形式に変換します。

Googleドキュメントを新規作成し、ボディーにkintoneから取得したデータを書き込みます。
その後、新規作成したGoogleドキュメントのURLを取得します。

ログインしているユーザーのEメールアドレスを取得し、Eメールの題目として、ドキュメント名を指定します。
取得したドキュメントのURLをリンクとして、Eメールのボディーに追加します。

Gmailにて、ログインユーザーへドキュメントへのリンクをメール送信します。

5. 動作確認

GASのスクリプトエディターの「公開」メニューより、「ウェブアプリケーションとして導入」を選択します。

publish.png

プロジェクトバージョンにNewを選択し、「導入」ボタンをクリックします。

install.png

Googleアカウントのデータへのアクセス承認の許可を確認します。

permission.png

下記のような警告が表示される場合、(安全でないページ)に移動をクリックし、続けます。

app_caution.png

GASを作成したGoogleアカウントを選択します。

select_account.png

GASのGoogleアカウントへのアクセスを許可します。

permission_accept.png

現在のウェブアプリケーションのURLが表示されますので、コピーして、ブラウザのアドレス欄に貼り付け、ウェブアプリケーションを実行します。

webapplication_url.png

ブラウザに表示された承認リンクをクリックする。

permission_link2.png

kintoneのログイン画面が表示されるので、ユーザー名とパスワードを入力してログインします。

kintone_login.png

OAuthクライアントのアクセスを許可します。

OAuthClient_accept.png

「Success!」が表示されたら、OAuthクライアントの承認が成功し、スクリプトが実行されたことになります。

success2.png

しばらくするとGmailが送信され、Googleドキュメントへのリンクをクリックしてkintoneアプリで設定したメッセージが表示されていれば、成功です。

message.png

Kintone_message.png

まとめ

新たに導入された外部連携の機能で、外部アプリケーションからOAuth 2.0を使って、kintone APIへのアクセスができるようになりました。
これにより、OAuth2.0で安全にユーザー認証を行い、外部アプリケーションから、kintone APIを通じて、アプリのデータを取得できるようになりました。

関連ページ

OAuthクライアントの使用

このTipsは、2019年02月版 kintoneで確認したものになります。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
鍋倉 由樹

こちらは、KintoneアプリにIP制限の設定をしていても可能でしょうか。

ご教授のほど、よろしくお願いいたします。

Avatar
cybozu Development team

鍋倉 由樹 様

お世話になっております。cybozu developer network 運営事務局でございます。

下記リンク先に記載通り、IP アドレス制限を行っている場合、OAuthクライアント の IP アドレスを登録する必要があります。
https://developer.cybozu.io/hc/ja/articles/360015955171#step4

本記事では GAS が OAuth クライアントとなっていますので、
GAS の IP アドレスを登録いただく必要がございます。

GAS の IP アドレスについては、GAS 側のヘルプにてご確認お願い致します。

以上、よろしくお願いします。

ログインしてコメントを残してください。