search
LoginSignup
2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

Blue Prism で Google Spread Sheet を読み書きする

はじめに

この記事では、Blue Prism の標準VBO である 「Google Sheets VBO」 を使って、Google Spread Sheet を読み書きする手順を紹介します。
Blue Prism 上での手順はとても簡単なのですが、Google API 側の事前準備が少々面倒です。標準ドキュメント(要ログイン)にも2Pほどで簡潔に説明されています。
あとで忘れそうな内容なので、備忘録として記述しました。

利用前の準備

Goole API を利用するプロジェクトを作成する

連携したい Google Spread Sheet と同じ Google Account にログインした状態で、
Google Cloud Platform のコンソールを開き、プロジェクトの選択ボタンをクリックします。
00.jpg

「プロジェクトの選択」ダイアログが表示されるので、「新しいプロジェクト」をクリックします。
01.jpg

適当な情報を入力し、「作成」ボタンをクリックします。
02.jpg

先ほど作成したプロジェクトが選択されていることを確認し、ハンバーガーメニューをクリックします。
03.jpg

Sheet APIを有効化する

「APIとサービス > ダッシュボード」を選択します。
04.jpg

「APIとサービスを有効化」をクリックします。
05.jpg

「APIライブラリへようこそ」画面の「APIとサービスを検索」フォームに、"Sheet" と入力します。
06.jpg

「Google Sheets API」画面が表示されるので、「有効にする」をクリックします。
07.jpg

同意画面を作成する

ハンバーガーメニューから、「APIとサービス > OAuth同意画面」をクリックします。
100.jpg

「OAuth同意画面」にて「外部」を選択し、「作成」をクリックします。
※ GSuiteのユーザーであれば、「内部」も選択できそうです。
12.jpg

「OAuth同意画面」にて、適当な「アプリケーション名」を記入し、「スコープを追加」をクリックします。
13.jpg

「Google Sheets API」を選択し、「追加」をクリックします。
14.jpg

「OAuth同意画面」に戻ってくるので、「保存」をクリックします。
15.jpg

認証情報を作成する

メニューから、「認証情報」をクリックします。
101.jpg

「認証情報を作成」をクリックし、「OAuthクライアントID」を選択します。
16.jpg

「OAuthクライアントIDの作成」画面で、「アプリケーションの種類」の「デスクトップアプリ」を選択します。
「名前」に適切な値を入力し「作成」をクリックします。
(以前はアプリケーションの種類で、「その他」が選択できましたが、2020年8月現在はできなくなっているようです)
17_.jpg

「OAuthクライアントを作成しました」というダイアログが表示されます。
「クライアントID」「クライアントシークレット」を手元にコピーしておきます。
18.jpg

「認証情報」画面に戻ると、「OAuth2.0クライアントID」のところに、先ほど作成したIDが表示されていることが確認できます。
19.jpg

読み取るスプレッドシートを作成する

先ほど作成した認証情報と同じ Google アカウントでログインした状態で、読み取る対象のスプレッドシートを適当に準備します。今回は下図のようなものを用意しました。
このとき、「Sheet ID」と呼ばれる値が必要になりますので、URLから該当する部分(図の赤枠部分)をコピーして控えておきます。
21_2.jpg

Blue Prism 側の手順

環境変数を設定する

インタラクティブクライアントのシステムタブを開き、「オブジェクト > 環境変数」にて、「Google Sheets API Client ID」「Google Sheets API Client Secret」の2つの環境変数を定義します。値は先ほど控えておいたものを設定し、右下の「適用」ボタンをクリックします。
20.jpg

シートのデータを読み取るプロセスを作成する

新しいプロセスを作成し、「Google Sheets::Get Range Values」アクションを図のように設定します。出力結果をマップするデータアイテムも作成しておきます。
21.jpg

「Google Sheets::Get Range Values」を開き、入力タブで値を設定します。
* 「Sheet ID」には、先ほど控えておいた Google Spread Sheet のURLの一部の値を設定します。
* 「Range」には、Excel でいうところの「R1C1」形式で読み取るレンジの値を設定します。
21_1.jpg

出力タブではデータアイテムへのマップを定義しておきます。
21_3.jpg

認証し、同意画面で同意する

作成したプロセスを初回実行すると、ブラウザが立ち上がり、Googleにログインを促されますので、認証します。
22.jpg

「このアプリは確認されていません」という画面が表示されるので、「詳細」をクリックします。
23.jpg

表示された「Google Spread Sheet VBO Test(安全ではないページ)に移動」をクリックします。(文言は Google Cloud Platform のコンソールで設定した内容に依存します)
24.jpg

「権限の付与」ダイアログが表示されるので、「許可」をクリックします。
25.jpg

一旦権限の付与が成功すると、アクセストークン/リフレッシュトークンが保存され、プロセスが最後まで実行できます。データアイテムの「現在値」タブを開くと、読み込んだ値を確認できます。
26.jpg

補足:トークンの保存先

OAuth 2.0 for Google Regular Accounts (installed applications) というドキュメントの "Using MailBee.NET and Google API to access a user's e-mail account" というセクションに記載があります。
C:\Users\UserName\AppData\Roaming\Google.Apis.Auth\Google.Apis.Auth.OAuth2.Responses.TokenResponse-user というファイル名で accessToken, refreshToken が保存されます。

補足:認証情報について

こちらの記事にも書きましたが、Refresh Token の有効期限については、下記に記載があります。一度認証して Refresh Token が払い出されると、6ヶ月放置するか、50以上のトークンが払い出されない限り、期限切れになることはないようです。今回のような自動化の仕組みでも許容できそうです。
https://developers.google.com/identity/protocols/OAuth2#expiration

シートのデータを追加するプロセスを作成する

読み取りと同様、データの追加もできます。
新しいプロセスを作成し、「Google Sheets::Append Data」アクションを図のように設定します。追加するデータアイテムも作成しておきます。
27.jpg

追加するデータアイテムを下記のように準備します。
28_1.jpg
28_2.jpg

「Google Sheets::Append Data」アクションの入力値タブは、下図のように設定します。
append_data.jpg

  • 「Sheet ID」には、先ほど控えておいた Google Spread Sheet のURLの一部の値を設定します。
  • 「Range」には、Excel でいうところの「R1C1」形式で読み取るレンジの値を設定します。列の幅だけあっていればよく、あとは空欄になる行にデータを追記してくれるようです。

実行すると、データが追記されていることが確認できます。
30.jpg

さいごに

アクセストークン/リフレッシュトークンがない状態だと、最初に人間が介在してブラウザからの認証を行う必要がある点は注意が必要だと思いました。新しいランタイムリソースで実行する時は、取得済みのトークンファイルを手で事前に設置しておくなど、対応が必要そうです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2
Help us understand the problem. What are the problem?