|
| 2026年3月までの広島城 |
GoogleCloudには,APIといわれるアクセス手段が用意されています。その1つであるGoogle Sheets APIを使うには,まず読みたいスプレッドシートのGoogleアカウントを使って,GoogleCloudConsoleにログインします。
①プロジェクトの作成
GoogleCloudの利用開始画面が表示されますので,ここでプロジェクトを作成します。
左上の□に囲まれた「プロジェクトの選択」をクリックします。プロジェクトの選択画面が開きますので,右上の「新しいプロジェクト」という文字をクリックします。
新しいプロジェクトの作成画面が開きます。「プロジェクト名」を任意に入れて左下の「作成」アイコンをクリックします。少し時間がかかります。
プロジェクトが作成出来たらプロジェクトを選択して,GoogleCloudのプロダクトの中から「API APIとサービス」というメニューを探します。
もし見つからなかったら,画面上部の検索欄から「API」とタイプインして見つけます。
「APIとサービス」画面が開いたら,検索欄から「sheets」と入力して,「Google Sheets API」プロダクトを探します。
検索できたら「有効」アイコンをクリックして有効にします。
②APIキーの作成
次に,「API APIとサービス」画面から左側メニュー欄にある「認証情報」をクリックし認証情報画面を出力します。
今回は,PADというRPAツールを活用して,GoogleCloudのスプレッドシートを外部から読むという実証ですから,APIの認証は「apikey」を作成してみたいと思います。
認証情報画面の上部にある「+認証情報を作成」をクリックして 「APIキー」を選択してください。
「APIキー」作成画面が開きますので,一意な「名前」を入力し,セキュリティリスク対策として「APIの制限」の「キーを制限」を選択し,選択欄から「Google Sheets API」を選びます。
最後に「作成」アイコンをクリックします。これで認証情報に「APIキー」が出現したと思います。「鍵を表示します」をクリックすると鍵が表示されますので取得します。(取扱注意)
Google Sheets APIの設定方法の説明は以上です。
③その他
この認証情報には「OAuth」という認証情報があります。こちらはスプレッドシートを更新する場合やスプレッドシートをPOSTメソッドで読んだりする場合に必要になります。
スプレッドシートの外部からの更新方法については,後日実証します。
設定画面例を表示していないので分かりにくいと思いますが,Google画面はよく変わりますのでご容赦下さい。
「Google Sheets API」の課金も気になるところですが,1分間のリクエスト上限(デフォルトで1ユーザーあたり毎分60リクエスト)内であれば、基本的に追加料金なしの無料で使用出来ます。
GoogleCloudには,その他沢山のAPIが用意されていますのでご確認ください。
2.Googleスプレッドシートの設定とIDの取得
次に読みたいスプレッドシートの設定をします。該当するGoogleアカウントを使って,GoogleDriveにログインし,対象とするスプレッドシートを表示します。
右上に「共有」というアイコンがありますので,これを開きます。「人の絵柄と+文字」というアイコン等になっている場合もあります。
「共有」画面が開いたら,「一般的なアクセス」の「制限付き」を「リンクを知っている全員」に変更します。
加えて,「スプレッドシートID」をURLから取得します。通常,URLは次の形をしています。
https://docs.google.com/spreadsheets/d/{スプレッドシートID}/edit?pli=1&gid=XXXX
この「d/」の次に来る文字列になります。これを取得しておきます。
なお,今回は実証のためセキュリティ条件を緩めましたが,「制限付き」でも読めるかどうかは,今後,実証します。
3.今回利用するPADツールの説明
今回利用するPADツールは「Power Automate Desktop」と言われ,マイクロソフトアプリの一つです。無料で使えるアプリとしてWindows11に標準装備されています。
RPAについて,少し申し上げますとRPAとは「Robotic Process Automation」の略で,パソコン上の定型業務(データ入力、集計、転記など)をソフト上の「ロボット」が自動代行する技術です。
今回はこれを使って,Googleスプレッドシートを外部からアクセスしてみます。
PADは使える部品が豊富で無料で使えるため,事務の自動化に役立つツールですが,ライセンス上,スケジュール実行できないのが残念です。
スケジュール実行したい場合はGoogleCloudの有料ライセンスを取得する必要があります。
PADを使わなくても,PowerShellを使って読むことも可能ですが,後処理を考えるとRPAツールの方が楽なので,今回はフリーのRPAツールを活用します。
4.Googleスプレッドシートの読込フロー
ここからは,PADのフローについて記述します。PADの起動やマイクロソフトアカウントログインならびに新しいフローの作成を選択してあるものとして以降記述します。
Google Sheets APIを利用したスプレッドシートの読み込みには,「Webサービスを呼び出して応答テキストを保存する」というアクション部品を使います。
それでは部品内で設定するWebAPIのURLを考えます。これは,公式のGoogle Sheets API ガイドにサンプルがあります。具体的には次のURLコードになります。
コード
https://sheets.googleapis.com/v4/spreadsheets/{スプレッドシートID}/values/{シート名}?key={APIキー}
これは,A1表記と呼ばれるもので
・{シート名}!A1:B2 と書くと、Sheet1 のA1セル~B2セルの範囲を指します。
これは,1項で作成した鍵情報になります。
今回は,シート全体を取得します。次にPADフローの展開を示します
①{スプレッドシートID}の変数への格納
WebAPIのURLは長いので,{スプレッドシートID}を変数「ssid」に格納します。このためのアクション部品は,「変数の設定」です。
③シート名の変数への格納
シート名「今回はSheet1」を変数「sheetname」に格納します。
④スプレッドシートのデータ読み込み
スプレッドシートのURLを設定し,GETメソッドで読みにいきます。アクション部品は,「Webサービスを呼び出して応答テキストを保存する」を使います。
少し,補足します。
- URLは先ほど記載したとおりですが,変数を使って記述しています。変数は「%」で囲みます。
- メソッドはGETにしています。
- 受け入れるは,受け入れられるコンテンツタイプです。 */* (アスタリスク/アスタリスク) は、「あらゆる種類のコンテンツ形式を受け入れる」 という意味のワイルドカードです。
- コンテンツタイプは,application/jsonにしています。
- 必要な変数は自動生成されます。
正常に読まれた場合,このアクションは全てのセル値をjsonファイル形式で返しますが,「WebServiceResponse」 変数には単なるテキスト文字列として格納されます。
このままでは,後続のデータ処理が難しいので,これを「JSONをカスタムオブジェクトに変換 (Convert JSON to custom object)」アクションを使用して、JSONオブジェクトに変換します。
⑤JSONデータのカスタムオブジェクト変換
読み込まれたJSON文字列をオブジェクト形式に変換します。これは「JSONをカスタムオブジェクトに変換」アクションを使います。
JSON文字列として変数「WebServiceResponse」(変数なので%で囲む)を与え,オブジェクト型変数「JsonAsCustomObject」に変換しています。この変数を使って,RPAで利用しやすいDataTBL型変数に変換していきます。
⑥オブジェクト型変数からDataTBL型変数の見出し部作成
次はオブジェクト型変数から,DataTBL型変数を作ります。まずはDataTBL型変数のヘッダー部分を作成します。これには「変数の設定」アクションを使います。
DataTBL型変数に,「%{^JsonAsCustomObject.values[0]}%」という変数を与えていますが,values[0]が0行目の各列群を表します。キャスト「^」を記入することでPADにDataTableのヘッダー部分だよと教えています。
{}で囲んでいますのでリスト形式だということがわかります。
⑦オブジェクト型変数の最終行カウントを退避
あとは,作成したDataTBL型変数にオブジェクト型変数(jsonデータ)の1番目から最終番目までを行データとして加えていけばいいので,Loop処理のための最終行カウンタを退避しておきます。このアクションは「変数の設定」アクションです。
ここではJsonAsCustomObject.values.CountでValuesが何行あるかをCountメソッドで調べ,それから1を引いて変数「loopend_count」に格納しています。つまり2行あれば1です。
⑧オブジェクト型変数の繰り返し処理
Loopさせるため「Loop」アクションを使います。LoopIndexの開始値が1,終了は先ほど取得した変数「loopend_count」,増分は1にします。
ここで注意点として,読み込むスプレッドシートがへっダー部分しかない場合,loopindexが開始値1の時にオブジェクト変数データに[1]番目の行データがないことになります。その時は次のアクションでエラーが発生します。必ず,2行以上あるスプレッドシートにして下さい。(本番では先に行数チェックをすべきだと思います。)
DataTBL型変数にLoopindex行目のValues値を加えて,元のDataTBL変数を置き換えます。
これにより,最終的なDataTBL変数が完成します。
5.まとめ
これで,GoogleDrive上にあるスプレッドシートを読んで,DataTBL型変数に格納することが出来ました。DataTBL型変数は「For each」アクションで行単位に読むことができますのでとっても便利です。
因みに,読んだDataTBL型変数は,こんな感じです。
ダミー的に作りましたので,見栄えはよくありません。
しかし,これを応用すればGoogleDrive上のスプレッドシートを外部の基幹システムに繋ぐことが可能になると思います。
後日,今度は外部からスプレッドシートに更新をかけるのを実証してみたいと思います。
それと,RPAについて少し申し上げます。RPAはとても便利なツールですが,フリー版でスケジュール実行でき,かつ商用利用も可能というのはほぼ無いのが実情です。
ひとつ見つけたのですが,これは他人が使い方を教えることが出来ないというライセンス制約があったため,当研究会では扱うことができませんでした。
また,RPAは互換性がありません。ひとたび作り始めると他社製品に乗り換えるのが難しくなります。いわゆるベンダーロックインです。そのため,最初からどのRPAを使うかが重要な判断になります。
有料RPAはAIツール等も充実してますので,メリットとリスクを天秤にかけてよい選択をしてください。
当研究会では,フリー版で商用利用が可能で,使い方を共有でき,出来ればスケジュール実行も可能なRPAについて記述してまいります。
それでは,楽しいITリテラシーライフをお過ごしください。
(ご注意)情報の正確性を期していますが,実施される場合には自己責任でお願いします。
0 件のコメント:
コメントを投稿