【RPA発展(3)】UiPathの使い方~HTTPリクエストでスプレッドシートのデータを更新

RPAの発展として、UiPathの実践的な使い方を紹介していきます。今回は、HTTPリクエストを使用して、Googleスプレッドシートのデータを更新(書き込み)したいと思います。Web APIの仕組みを活用します。

単にスプレッドシートを操作するだけなら、コミュニティチームが提供している、スプレッドシートを扱う専用のアクティビティ(UiPathTeam.GoogleSpreadsheet.Activities)も使用できます。

本記事では、HTTPリクエストを使用して、スプレッドシートのデータを更新する方法を紹介します。また、VB.NETコードを書いて、CSVデータをJSON文字列に変換する方法も説明したいと思います。

Web Activitiesパッケージ

【Step.1】UiPathを起動

先ずは、PCにインストールしているUiPathを起動して、空のプロジェクト(Blank)を作成します。

create project

【Step.2】Web.Activitiesパッケージのインストール

(※既にインストール済みの場合は省略可)

UiPathでHTTPリクエストを使用したり、JSONデータを処理するためには、Web.Activitiesパッケージをインストールします。「Manage Packages」のボタンをクリックします。

manage packages

別ウィンドウで開かれた設定画面の左メニューの「Official」をクリックして選択します。次に、検索窓に「web」と入力します。検索結果欄に表示された「UiPath.Web.Activities」をクリックして選択します。

右メニューの「install」ボタンをクリックしてパッケージをインストールします。最後に、「Save」ボタンを押して完了です。なお、Saveの際に、ライセンス確認がありますので、一読してから同意しましょう。

install package

スプレッドシートのデータを更新

【Step.3】スプレッドシートの作成

スプレッドシートを新規作成し、下記のような項目を記入しておきます。

create spreadsheet

【Step.4】Web APIの設定

HTTPリクエストを使用して、スプレッドシートのデータを更新するためには、事前にスプレッドシートのWeb APIを設定しておく必要があります。APIの設定は、Google Cloud Platform(GCP)から行います。

詳細は割愛しますが、下記の手順でWeb APIの設定を行います。

  1. GCPのアカウント作成
  2. Spreadsheet APIの有効化
  3. OAuth 2.0認証

上記の設定を行い、OAuth 2.0の「アクセストークン」を取得します。なお、スプレッドシートのデータ取得は「APIキー」でも可能でしたが、データ更新はできません。データ更新では「アクセストークン」が必要です。

【Step.5】CSVデータの準備

スプレッドシートに書き込むテーブルデータを準備します。今回は下記のようなCSVデータを読み取って、スプレッドシートに転記します。ファイル名は「data.csv」とし、文字コードは「UTF-8」に設定しておきます。

create csv

【Step.6】CSVデータの読み込み

先ずは、スプレッドシートに転記するCSVデータを読み込みます。画面左側のアクティビティ検索窓に「csv」と入力します。表示された「Read CSV」アクティビティを、ワークフロー内にドラッグ&ドロップします。

read csv

「Read CSV」アクティビティのプロパティで、対象のCSVファイル名(今回は、data.csv)のパスを指定します。次に「IncludeColumnNames」のチェックを外します。最後に、読み取ったデータを保存するテーブルデータの変数名(DataTable)を、「data」と設定します。

【Step.7】JSON文字列の作成

スプレッドシートにデータを書き込む際には、Web APIを使用します。このとき、書き込むデータはJSON文字列で渡します。従って、Step.6で取得したCSVデータ(DataTable型)をJSON文字列に変換する必要があります。

実際にWeb API経由で渡すデータは、下記のようなJSON文字列になります。「values」キーに、2次元配列を持たせます。

{
  "values" :
    [
      ["0006","佐藤 猛","男性","24"],
      ["0007","福田 咲","女性","32"],
      ["0008","岡本 圭太","男性","36"],
      ["0009","高橋 大介","男性","22"],
      ["0010","本多 優子","女性","20"]
    ]
}

今回は、VB.NETコードを書いて、CSVデータ(DataTable型)を上記のJSON文字列に変換してみます。画面左側のアクティビティ検索窓に「code」と入力します。表示された「Invoke Code」アクティビティを、「Read CSV」アクティビティの下にドラッグ&ドロップします。

invoke code

先ずは、「Edit Code」ボタンを押して、下記のようにVB.NETコードを書きます。このコードは、CSVデータ(DataTable型)を所望のJSON文字列に変換してくれます。

code editor

【VB.NETコード】

jstr = "{""values"":["

For Each row As DataRow In dt.Rows
	Dim tmp As String = "["
 
 	For Each item As String In row.ItemArray
  		tmp += """" + item + ""","
 	Next
 
 	tmp = tmp.Remove(tmp.Length - 1, 1) '末尾のカンマを削除
 	jstr += tmp + "],"
Next

jstr = jstr.Remove(jstr.Length - 1, 1) '末尾のカンマを削除
jstr += "]}"

次に、「Edit Arguments」ボタンを押して、下記のように引数の設定を行います。今回は、「dt」と「jstr」の2つの変数を設定します。

edit arguments

項目 説明
Name VB.NETコード側で使用する変数名です。
Direction 引数の代入方向です。「In」の場合は、UiPathのワークフロー側で使用する変数の値を、VB.NETコード側で使用する変数に代入します。「Out」の場合は逆方向に代入します。
Type 引数の型です。
Value UiPathのワークフロー側で使用する変数名です。

「dt」には、UiPathのワークフロー側で使用している変数data(DataTable型)の値を代入します。これで、読み込んだCSVデータをVB.NETコード側に渡して処理することができます。

「jstr」はVB.NETコード側で作成したJSON文字列です。この変数を、UiPathのワークフロー側の変数jsonStringに代入します。なお、変数jsonStringはここで新規作成します。これで、作成したJSON文字列を、UiPathのワークフロー側に渡すことができます。

【Step.8】HTTPリクエストの設定

HTTPリクエストの設定を行います。画面左側のアクティビティ検索窓に「http」と入力します。表示された「HTTP Request」アクティビティを、「Invoke Code」アクティビティの下にドラッグ&ドロップします。

http request

アクティビティをドラッグ&ドロップすると、別ウィンドウで設定画面が表示されます。

wizard setting

下表の通り、プロパティを設定します。

項目 備考
End Point ***** アクセスするURLです。下記参照。
Request Method PUT HTTPリクエストのタイプです。今回は「PUT」を設定します。
Authentication OAuth2 Web API認証のタイプです。今回は「OAuth2」を設定します。
Access Token ***** Step.4で取得しておいた「アクセストークン」を設定します。

なお、「End Point」は下記の値を記入します。

https://sheets.googleapis.com/v4/spreadsheets/[スプレッドシートID]/values/[セル範囲]?valueInputOption=USER_ENTERED

【実際の値】
https://sheets.googleapis.com/v4/spreadsheets/*****/values/シート1!A2:D6?valueInputOption=USER_ENTERED

[スプレッドシートID]には、Step.3で作成したスプレッドシートのIDを、[セル範囲]には、今回は「シート1!A2:D6」と記入します。これで、スプレッドシートのA2:D6にデータを書き込むことができます。

最後に、「HTTP Request」アクティビティのプロパティを設定します。Optionsの「Body」に、送信するJSON文字列(変数jsonString)を設定します。OutPutの「Result」に、HTTPリクエストの結果を保存する変数を新規作成します。変数名は「response」としました。

result setting

【Step.9】レスポンス結果の表示

HTTPリクエストのレスポンス結果をメッセージ画面に表示してみましょう。画面左側のアクティビティ検索窓に「box」と入力します。表示された「Message Box」アクティビティを、「HTTP Request」アクティビティの下にドラッグ&ドロップします。

message box

「Message Box」アクティビティのプロパティで、Textの値に変数responseを設定します。これで、準備が完了しました。

【Step.10】ワークフローの実行

では、上部パネルの「Run」をクリックし、このワークフローを実行してみましょう。意図した通り、CSVデータをスプレッドシートに転記することができています。

message box

result

まとめ

今回は、HTTPリクエストを使用して、Googleスプレッドシートのデータを更新しました。

下記の点を理解して、他の業務にも応用できるようにしましょう。

  • HTTPリクエストを使ってスプレッドシートのデータを更新できる
  • スプレッドシートのデータを更新するにはOAuth 2.0の「アクセストークン」が必要
  • VB.NETコードでCSVデータを「JSON文字列」に変換できる
  • JSON文字列をHTTPリクエストで送信する

最後に、UiPathに関する参考図書を一冊紹介しておきます。
できるUiPath 実践RPA <amazon.co.jp>

※本書の内容はネット上でも公開されているようです(できるネット)。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする