【UiPath×Gmail】GoogleAPI初期設定からトークン取得までを解説

「GoogleAPI」、聞いたことはあるでしょうか。

これは、Googleの機能(Gmail、Gdrive,Youtube等)を他アプリから呼び出す際に使います。もちろん、RPAでの自動化でも非常に非常に役に立ちます。なぜならメール送信などよく使われる処理を早く正確に実装できるからです。

しかし、言語ごとに異なる設定方法、公式リファレンスが英語であるなど、なかなかに敷居が高いものだと思います。

今回は、このGoogleAPIの最大の難所であると思われる「トークン取得」までの方法を丁寧にご説明します。

また、RPAとの連携という意味合いで、UiPathでの取得方法も紹介いたします。

WebAPIとは

WebAPIとは、Webアプリの一部機能を外部から呼び出せるように公式が用意したデータ連携方法です。

これにより、実際のアプリ画面から操作せずともアプリの機能を使えます。

自動化にうってつけだと思いませんか??

一段階認証と二段階認証

APIというのはデータ連携を行うための通路だと思ってください。また、誰でもAPIを使ってデータにアクセスできないよう、その通路には鍵付きの扉がついています。

この扉を開けるためのカギを「トークン(アクセストークン)」と呼びます。

トークンを持っていないとAPIは使えません(通れません)。

この鍵の取得方法は大きく分けて二つあり、「一段階認証」、「二段階認証」といいます。

一段階認証とは、アカウントのログインIDとパスワードによってすぐにトークンが取得できるというものです。また、このトークンの多くは再発行しない限り使い続けることができます。

二段階認証とは、アカウントのログインIDとパスワードにより本人確認用の「認証コード」が発行され、それを用いることでトークンが取得できる。というものです。さらに、このトークンは有効期限が定められている場合が多く、「更新」という手段で期限をリセットするのが一般的です。

何らかの会員登録やアカウント作成でこのような一時的なコードを受け取った経験があると思います。それも二段階認証です。

今回は、一段階認証の例としてチャットワークAPI、TwitterAPI、二段階認証の例としてGmaiAPI、salesforceAPIなどがあります。

チャットワークAPIについて記事を書いていますので、もしご興味があればご覧ください。本記事の二段階認証のめんどくささが一目瞭然だと思います。

https://mag.sweeep.ai/rpa/chatworkapi-message-send/

GoogleAPI初期設定

この章では、上で説明したログインIDとパスワードに対応する、「クライアントID」「クライアント・シークレット」というものを取得することがゴールになります。

その前段階として、GoogleAPI管理画面の設定を行います。

プロジェクト作成

Google Developers consoleにログイン

①Google Developers Console (https://console.developers.google.com/apis) を開きます。

②API連携を行うGoogleアカウントでログインします。

プロジェクトの作成

①[プロジェクトの選択]をクリックします。

②[新しいプロジェクト]をクリックします。

③[プロジェクト名]、[組織]を決定(任意)し、[作成]します。

これでプロジェクトの作成が完了しました。

APIの有効化

API Manager

①先ほど作成したプロジェクトを開きます。

Gmail APIの有効化

①三本線(ナビゲーションメニュー)から[APIとサービス]の[ダッシュボード]に移動します。

②[APIとサービスの有効化]をクリックします。

③[Gmail API]を探しクリックします。

④[有効にする]をクリックし有効化します。

これでGmailAPIが有効になりました。

クライアントID・シークレットの取得

OAuth同意認証

①ナビゲーションメニューから[認証情報]を選択します。

②[OAuth同意画面]を選択します。

③[メールアドレス]、[アプリケーション名]を決定し、[保存]します。

これで、同意画面の設定が完了しました。

クライアントID・シークレット取得

①[認証情報]から[認証情報を作成]を選択します。

②[OAuthクライアントID]を選択します。

③GmailAPI連携を行うアプリケーションを選択し、[作成]します。

今回の場合は[その他]を選択し、[名前]を”UiPath”としておきます。

④クライアントIDとクライアントシークレットが取得できます。

これらは後のトークン取得で必要なので控えておきましょう。

※クライアントIDとシークレットは一度作成されると今後変更されることはない。

※生成されたID・シークレットは[認証情報]画面から再度確認することもできる。

GoogleAPIトークン取得

この章では、先ほど取得したクライアントID・シークレットを使って、トークンを取得します。

また、トークンの更新方法にも触れます。

認証コードの取得

①Webブラウザで以下を開きます。

https://accounts.google.com/o/oauth2/auth?client_id={OAuthのクライアントID}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope={使用するスコープ}&response_type=code&approval_prompt=force&access_type=offline

 

※{OAuthのクライアントID}は2.3で取得したクライアントID

※{使用するスコープ}でアクセス権限を指定します。

↓一部の例

https://www.googleapis.com/auth/gmail.readonly…読み込みのみ

https://www.googleapis.com/auth/gmail.compose…下書きのみ

https://www.googleapis.com/auth/gmail.send…送信のみ

https://www.googleapis.com/auth/gmail.labels…ラベル操作のみ

https://mail.google.com/…フルアクセス

 

全スコープは以下ページに載っています。

https://developers.google.com/gmail/api/auth/scopes

今回は送受信などすべての操作が可能なhttps://mail.google.com/を使用します。

②アカウントを選択します。

③権限が正しいことを確認し、[許可]します。

④認証コードが取得できます。

アクセストークンの取得

コマンドプロンプトでの取得

①コマンドプロンプトで以下のコードを実行します。

curl -d client_id={OAuthのクライアントID} -d client_secret={OAuthのクライアントシークレット} -d redirect_uri=urn:ietf:wg:oauth:2.0:oob –d grant_type=authorization_code -d code={AutorizationCode} https://accounts.google.com/o/oauth2/token

 

※{OAuthのクライアントID}は2.3で取得したクライアントID

※{OAuthのクライアントシークレット}は2.3で取得したクライアントシークレット

※{AutorizationCode}は3.1で取得した認証コード

②リクエストに成功すると、Json形式で返ってきます。

※access_token…HTTPリクエストに使用するトークン

※expries_in…アクセストークンの有効時間(s)

※refresh_token…新しいアクセストークンを生成するための更新トークン

※curlコードを実行できない場合は、curlを有効にするか下記のUiPathによる取得を試みてください。

UiPathでの取得

①HTTP Requestアクティビティを使用します。

HTTPリクエストアクティビティがない場合、インストールが必要です。

②アクティビティを設置すると同時にHTTP Request Wizardが開きます。

ここでリクエストのエンドポイントやヘッダーなどを指定します。

※このWizardは一度[OK]を押して設置してしまうと二度と開けません。ですが、もろもろの設定は設置後にプロパティ画面から設定できます(以下で使います)。

③エンドポイント、パラメータなどを設定し、[Preview]を押下して実行します。

———————————————————————-

エンドポイント:https://accounts.google.com/o/oauth2/token

Request Method:POST

パラメータ(Name=Value):

client_id={OAuthのクライアントID}

client_secret­={OAuthのクライアントシークレット}

redirect_uri=urn:ietf:wg:oauth:2.0:oob

grant_type=authorization_code

code={AuthorizationCode}

————————————————————————

※{OAuthのクライアントID}は2.3で取得したクライアントID

※{OAuthのクライアントシークレット}は2.3で取得したクライアントシークレット

※{AutorizationCode}は3.1で取得した認証コード

入力したものが以下になります。

※パラメータを追加する際は[Add Parameter]をクリック

※パラメータの[Name]は任意に変更してはいけない

※パラメータ値[Value]にスペースなどが含まれているとリクエストエラーとなるので注意

④リクエストに成功すると次のように表示されます。

※入力ミスなどの人的ミスによってこの処理に失敗した場合、認証コードが失効してしまいます。そうなった場合、認証コードから取得しなおしてください。

 

更新トークンの利用

上で述べたように、アクセストークンは生成してから1時間で失効してしまいます。その際、同時に生成された更新トークンを用いることで再度アクセストークンを生成することができます。

コマンドプロンプトでの更新

①コマンドプロンプトで以下のコードを実行します。

curl -d “client_id={OAuthのクライアントID}&client_secret={OAuthのクライアントシークレット}&refresh_token={refresh_token}&grant_type=refresh_token” https://accounts.google.com/o/oauth2/token

 

※{OAuthのクライアントID}は2.3で取得したクライアントID

※{OAuthのクライアントシークレット}は2.3で取得したクライアントシークレット

※{refresh_token}は3.2で取得したリフレッシュトークン

②リクエストに成功すると、Json形式で返ってきます。

UiPathでの更新

①HTTP Requestで以下のようにパラメータを設定する。

———————————————————————-

エンドポイント:https://accounts.google.com/o/oauth2/token

Request Method:POST

パラメータ(Name=Value):

client_id={OAuthのクライアントID}

client_secret­={OAuthのクライアントシークレット}

refresh_token={更新トークン}

grant_type=refresh_token

————————————————————————

※{更新トークン}は3.2で取得した更新トークン

②以下のようにアクセストークンが得られる。

③更新トークン自体に有効期限はないため、この処理は何度でも使えます。下のようにフローチャートのなかで用いて、APIを扱う前にトークンの更新を行えばよいでしょう。

以上で、初期設定からトークン取得、トークンの更新について完了しました。

まとめ

いかがでしたでしょうか。他にもUiPathに関する記事は多数あります!下記もあわせてご覧ください。

請求書の受け取りはsweeepで自動化

【AI請求書処理】従来の請求書OCRでは対応できない非定型帳票や

自動会計仕訳も、sweeepなら対応可能!最短で即日導入、

面倒な設定不要。手軽に導入して請求業務を効率化。