Power Automate for desktop

[Power Automate Desktop]Google APIのアクセストークンを取得するフロー

前回の記事でGoogle APIのアクセストークンを取得するPowerShellスクリプトを紹介しました。今回はそのスクリプトをPower Automate Desktop(PAD)のフローに組み込んでみようと思います。

Google APIのアクセストークンを取得するフロー(GetGoogleAccessToken)

入力変数

アクセストークンの取得に必要なクライアントID、クライアントシークレット、スコープ(複数ある場合は「,」で区切る)、トークンが書かれたJSONファイルの保存先フォルダ(トークンフォルダー)のパスを変数として受け取るため、下記の入力変数を用意します。

  1. %ClientId%
  2. %ClientSecret%
  3. %Scopes%
  4. %TokenFolderPath%

出力変数

取得したアクセストークンを出力するための出力変数を用意します。

  1. %AccessToken%

サブフロー:GetTokenFile

前回の記事で紹介したスクリプトをサブフローとして組み込みます。
スクリプト内で読み込んでいるDLLのパスは必要に応じて変更してください。

[void][Reflection.Assembly]::LoadFile("C:\System\Lib\Newtonsoft.Json.dll")
[void][Reflection.Assembly]::LoadFile("C:\System\Lib\Google.Apis.dll")
[void][Reflection.Assembly]::LoadFile("C:\System\Lib\Google.Apis.Core.dll")
[void][Reflection.Assembly]::LoadFile("C:\System\Lib\Google.Apis.Auth.dll")
$client_secrets = New-Object Google.Apis.Auth.OAuth2.ClientSecrets
$client_secrets.ClientId = "%ClientId%"
$client_secrets.ClientSecret = "%ClientSecret%"
[String[]]$scopes = @("%Scopes%")
$fds = New-Object Google.Apis.Util.Store.FileDataStore("%TokenFolderPath%", $true)
$gwab = [Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker]::AuthorizeAsync($client_secrets, $scopes, "user", [System.Threading.CancellationToken]::None, $fds)
$res = $gwab.Result
1. フォルダーが存在する場合

トークンフォルダーが存在するかを確認します。
存在しない場合は「サブフローの実行」アクションで「GetTokenFile」フローを実行します。

2. フォルダー内のファイルを取得

トークンフォルダー内にあるJSONファイルを取得します。
ファイルが存在しない場合(フォルダー内のファイル個数が1未満)は、「サブフローの実行」アクションで「GetTokenFile」フローを実行した後で再度フォルダー内のファイルを取得します。

3. ファイルからテキストを読み取ります

トークンフォルダー内にあるJSONファイルの内容を取得します。

・ファイル パス:%Files[0]%
・内容の保存方法:単一のテキスト値
・エンコード:UTF-8

4. JSON をカスタム オブジェクトに変換

取得したJSONをカスタムオブジェクトに変換します。
エラー発生時の処理として「Err」ラベルに移動するようにします。

5. Web サービスを呼び出します

JSONから取得したリフレッシュトークンを使用してアクセストークンを取得します。

・URL:https://accounts.google.com/o/oauth2/token
・メソッド:POST
・受け入れる:application/json
・コンテンツ タイプ:application/x-www-form-urlencoded
・要求本文:

grant_type=refresh_token&client_id=%ClientId%&client_secret=%ClientSecret%&refresh_token=%JsonAsCustomObject['refresh_token']%

・応答を保存します:テキストを変数に変換します (Web ページ用)
・要求本文をエンコードします:オフ

エラー発生時の処理として「Err」ラベルに移動するようにします。

6. If

「Web サービスを呼び出します」アクションが成功した場合(StatusCodeが200)のみ、出力変数「%AccessToken%」の値としてアクセストークンを設定し、フローを終了します。

7. ラベル(Err)

処理の途中で失敗した場合はラベル「Err」に移動し、エラーメッセージを表示してフローを終了するようにします。

フロー全体

動作確認

新規フローを作成し「Desktop フローを実行」アクションで上記アクションの動作確認を行ってみます。

結果は下図の通りで、無事にアクセストークンが取得できました。

関連記事

[PowerShell]Google APIのアクセストークンを取得する前のページ

[Power Automate Desktop]Google Driveにファイルをアップロードするフロー次のページ

関連記事

  1. Google関連

    [Google Apps Script]Google ドライブにある画像をスライドに一括挿入する

    前回の記事では、Google ドライブにある1つの画像ファイルをスライ…

  2. Office関連

    Google スライドで新規プレゼンテーションを作成するVBAマクロ

    ここ数日PowerPointのマクロに加え、Google Apps S…

  3. Power Automate for desktop

    Power Automate for desktopの起動方法

    今回はPower Automate for desktop(PAD)の…

  4. Power Automate for desktop

    Power Automate Desktopを更新するPowerShellスクリプト

    公式ブログを見れば分かる通り、Power Automate Deskt…

  5. Google関連

    Google Sheets API v4が登場しました。

    「Google Apps Developer Blog: New wa…

  6. Power Automate for desktop

    Power Automate for desktop(Power Automate Desktop)…

    前回の記事でも触れていますが、Windows 11ではPower Au…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP