|
| 宮島と牡蠣筏 |
1 .はじめに
今回のSpreadSheetの更新には,「Google Sheets API」の「サービスアカウント」という認証情報を使います。
これは,「OAuth 2.0 クライアント ID」よりも使いやすいからです。また,実証用RPAツールとして「Node-RED」を使います。
マイクロソフトの「PAD(Power Automate for Desktop)」でGoogleSpreadSheetを更新するにはHTTPアクションを使うため,Header部に「JWT認証によるアクセストークン」を与えなければなりません。
アクセストークンを得るには「JWT認証用のPowerShell」を作る必要があります。
そこで,今回はGoogleSpreadSheetの更新機能を簡単に試せる「Node-RED」の「GoogleSheet」パレットを利用してみたいと思います。
「Node-RED(ノードレッド)」とは、Webブラウザ上で「ノード」と呼ばれる機能ブロックを線でつなぎ合わせ、フロー(処理の流れ)を作成するノーコード/ローコードの視覚的プログラミングツールです。
IoT機器、API、オンラインサービスを簡単に連携でき、主にデータの収集・加工や自動化ツールとして利用されています。
当研究会では,出来る限りフリーでベンダーロックインされない方法を研究していきたいので,今回はこのツールを利用します。
Node-REDの他に「n8n」というのもありますが,今後の課題といたします。
2.Google Sheets APIのサービスアカウント作成方法
今回もAPIキーの場合と同様に,GoogleCloudConsoleにログインします。
①プロジェクトの作成
GoogleCloudの利用開始画面が表示されますので,ここでプロジェクトを作成します。
左上の「プロジェクトの選択」をクリックします。プロジェクトの選択画面が開きますので,右上の「新しいプロジェクト」という文字をクリックします。(既にプロジェクトがあれば,それを使ってもいいです。)
新しいプロジェクトの作成画面が開きます。「プロジェクト名」を任意に入れて左下の「作成」アイコンをクリックします。少し時間がかかります。
プロジェクトが作成出来たらプロジェクトを選択して,GoogleCloudのプロダクトの中から「API APIとサービス」というメニューを探します。
もし見つからなかったら,画面上部の検索欄から「API」とタイプインして見つけます。
「APIとサービス」画面が開いたら,検索欄から「sheets」と入力して,「Google Sheets API」プロダクトを探します。
検索できたら「有効」アイコンをクリックして有効にします。
「GoogleSpreadSheet」を更新するだけなら「Google Sheets API」プロダクトを有効にするのみですが,ファイルの検索や作成も行う場合は,「Google Drive API」プロダクトも有効にする必要があります。
②サービスアカウントキーの作成
次に,「API APIとサービス」画面から左側メニュー欄にある「認証情報」をクリックし認証情報画面を出力します。
今回は,Node-REDというRPAツールを活用して,GoogleCloudのスプレッドシートを外部から更新するという実証ですから,APIの認証は「サービスアカウント」を活用してみたいと思います。
認証情報画面の上部にある「+認証情報を作成」をクリックして 「サービスアカウント」を選択してください。
「サービスアカウント」作成画面が開きますので,一意な「サービスアカウント名」を入力し,「作成して続行」をクリックします。
権限(省略可)と出ますが,これはプロジェクト内のリソースに対するアクセス権なのでロールは「削除」します。「続行」をクリックします。
次にアクセス権を持つプリンシパル(省略可)の設定ですが,GoogleSheetを更新するだけなのでそのまま「完了」をクリックします。
最後に「作成」アイコンをクリックします。これで認証情報に「サービスアカウント」が出現したと思います。
続いてサービスアカウントキーを作成します。該当のサービスアカウントをクリックします。「サービスアカウントの詳細」画面が出現します。
上部の「鍵」タブををクリックします。下部の「キーを追加▼」をクリックして「新しい鍵作成」を選択します。
「サービスアカウントの秘密鍵の作成」画面が出ますので,「JSON」を選択して右下隅の「作成」アイコンをクリックしてください。
「サービスアカウントキー(認証情報JSONファイル)」がダウンロードされますので,安全な場所に保存してください。なお,このファイルはセキュリティ上大変重要です。
鍵の作成において,Googleより「Workload Identity連携」をするように勧められます。これは,「サービスアカウント キー(JSONファイル)」を使わずに、外部環境(AWS、Azureなど)から Google Cloud のリソースへ安全にアクセスするための仕組みです。Googleに正式に認められたAWSなどと連携してサービスアカウントを認証する方式のため,個人事業者のサーバ等で実現するには難しい面があります。そのため,サービスアカウントには無駄な「ロール(役割)」を与えないことと,利用する「APIサービスを最低限に絞る」ことで最低限のセキュリティを確保することにします。
3.Googleスプレッドシートの設定とIDの取得
次に更新したいスプレッドシートを設定します。該当するGoogleアカウントを使って,GoogleDriveにログインし,対象とするスプレッドシートを表示します。
右上に「共有」というアイコンがありますので,これを開きます。「人の絵柄と+文字」というアイコンになっている場合もあります。
「共有」画面が開いたら,「アクセスできるユーザー」に「サービスアカウント」で作成した「メールアドレス」を追加します。
そして,この「メールアドレス」の権限を「編集者」に変更します。
加えて,「スプレッドシートID」をURLから取得します。通常,URLは次の形をしています。
https://docs.google.com/spreadsheets/d/{スプレッドシートID}/edit?pli=1&gid=XXXX
4.今回利用するNode-REDツールの説明
今回利用するRPAツールは「Node-RED」と言われ,ブラウザ上で「ノード」と呼ばれる機能ブロックを線でつなぎ合わせて作る視覚的プログラミングツールです。
Windows版は,コマンドプロンプト上でインストールすることが出来,PowerShellやpythonなどもNode-REDを通して利用することが可能です。
なお,Node-REDはNode.js上で稼働するため,事前にNode.jsの最新版LTSをNode.js公式ホームページからダウンロードし,インストールしておく必要があります。
詳しくは,Node-REDの公式ホームページを参照してください。起動方法はインストール後,Windowsのコマンドプロンプトから「node-red」と入力すると起動します。
今回はこれを使って,Googleスプレッドシートを外部から更新してみます。
5.Googleスプレッドシートの更新フロー
ここからは,Node-REDのフローについて記述します。Node-REDはインストール済みとして以降記述します。
「Google Sheets API」を利用したスプレッドシートの読み込みには,パレットの「node-red-contrib-google-sheets」というノード部品を使います。
Node-REDはWindowsのコマンドプロンプトで,「node-red」と入力すれば立上がります。
コード
node-red
|
| Node-REDプログラム作成 |
|
| GSheetノードの設定画面 |
|
| スプレッドシート(初期内容) |
|
| スプレッドシート読取実行図 |


6.まとめ
「Google Sheets API」と「サービスアカウント」を使って,GoogleSpreadSheetの更新を実証してみました。
正常に更新出来ましたので,GoogleAppSheetなどで作成されたスプレッドシートと既存の基幹システムを連携することが可能です。
なお,RPAツールはWindows版のNode-REDを使いました。Node-REDは,RaspberryPiなどでもよく使うツールです。
ユーザが独自の部品を作ることもできますので,今後はこれを使ってフリー版RPA用の部品を作ってみたいと思います。
なお,今回のNode-REDは,セキュリティ的に保護されたPC環境で動作することを前提に作成しています。
インターネット上に置く場合は,さらにセキュリティ上の保護対策をしなければなりませんのでご承知おきください。
また,このプログラムを自動的に好きな時刻に起動させる方法としては,Node-RED内のタイマーで起動させる方法と,タスクスケジューラを使って起動させる方法があります。
どちらもそんなに難しくないと思いますが,後日実証してみたいと思います。
それでは,楽しいITリテラシーライフをお過ごしください。
(ご注意)情報の正確性を期していますが,実施される場合には自己責任でお願いします。
0 件のコメント:
コメントを投稿