ブログ

Power Automate Desktopの「Webサービスを呼び出します」アクションを使ってDomoのAPIを使ってみる(アクセストークンの取得)

背景

Domoはデータ接続、転送、整形加工、可視化、情報共有がオールインワン提供に加えて、企業向け管理機能も優れているので、例えば、どのようなデータを誰が、いつ作って、今現在どんな状態になっているのか、データ同士の連携など様々な切り口で分類、整理し、最新のツールらしくグラフィカルに綺麗に表示してくれます。ですが逆に、時々旧石器時代のように管理情報をEXCELにテキストでベタ書きした表が欲しくなります。このような場合にはDomoが用意しているCLIツールを使えば良さそうなのですが、今回はCLIを使わず、以前から気になっていたマイクロソフトの無料RPAツールであるPower Automate DesktopとDomo APIを使って、DomoのDataSet情報をEXCEL表に自動転記してみました。
今回は手作業の場合、Domoへログイン行為(認証と認可)に相当するアクセストークンの取得に関して記します。

Domo API仕様 オリジナル情報はコチラです

https://developer.domo.com/docs/authentication/overview-4#Important%20terms
要はDomoデベロッパーポータルからClient IDとClient Secretを取得して下記のようにリクエストすると・・・

$ curl -v -u {CLIENT_ID}:{CLIENT_SECRET} "https://api.domo.com/oauth/token?grant_type=client_credentials&scope={SCOPE}"

下記のようなJSONが得られるので・・・

{
"access_token": "GhX52tNtsnyQQybNBtjrc9KbH4DhKTxPbdHcvfHnX3NYGjBWSzdP9kNxWbwDdNMSYqt3VKSBxVXAMYjBAhtvMpscB9edmSjd8BE3gfpGw8uAZhwAHccekG2yBZMse7CPHQkv8JSKcykz4gbcuWak8RpPkVCc8cCZzAzmE7bXQrAGwmPG6wh7YMmBEB6ZPtz8ZYgBNH7S5MYwsJ295A99Bqz7Jn83U333cfT5JT5s5RSF9sUebAKw5cedBU4kf6qq9pFxJ3pcPKqbtZdzRVz4WtRDXsd87FjSVCFk36TRS6Q9GDdM2WZXJjKpEUtCDpX2GSBwsBJgWdWGe3VnTp9U46Fw5dsbBQwDZ4VSQuk9UKJdqfkR5WrfYueVReUKSjCHS6CXjs5RRBSSAmejE7wtDWfdJ2FGnZ9sBDK4eUgWCz8NXSXtWhQtQdenSM47rbSsWF9r8QwChDdQ93NBWYFfsxKcgBa9J6UyaG3T2GWMvgTHc8vTPMhhsS6ceMfEUJUKpQkuHsgtcC7uWWrYnnJFenR34Dr2GNAxkU3CPjys4M3xQNJRkbXyRwtEsEs275MnKQbyF4bayZKU7uJFQhVSjujmf2KRQrsnKamhNSfhJhyttaG48ZuYnTCnCVUvdJF7ATUh",
"customer": "acmecompany",
"expires_in": 3599,
"jti": "81dece4c-df73-4569-853c-2d1a328897fd",
"role": "Admin",
"scope": "data user",
"token_type": "bearer",
"userId": 964382593
}

"access_token"を指定して取得すれば良さそうです。

Power Automate Desktop全体フロー

フローの各1~5の行は下記のような事を行っています。

1.Client IDとSecretを指定してWebサービスを呼び出し
2.念のため、返ってきたJSON値を画面表示し返り値の有無を確認
3.さらに、念のため返ってきたJSON値をファイルに保存
4.JSON値から"access_token"指定でアクセストークンだけ取得するために変換
5.取得したアクセストークンを画面表示し確認

Client IDとSecretの取得

上記のようなPower Automate Desktopの設定を行う前に、DomoへRPAで接続に来てもDomoシステムが利用可能となるようにユーザーIDとパスワードのような役割のClient IDとClient Secretを取得する必要があります。取得するためにDomoのデベロッパーポータルにログインします。https://developer.domo.com/

普段Domoを使っている時、ブラウザのURLを見ると「https://xxxxxxxxxxxxx.domo.com/admin?userId=12345678」のような表記の.domo.com前の xxxxxxxxxxxxxの部分がDomainです。 https:// は不要です。

Domoドメインを指定後、「Continue」ボタンをクリックすると、Domoにログインしていない場合、見慣れたいつものDomoログイン画面が表示されますので、いつも使っているユーザーIDとパスワードでログインします。

下記のような画面からMyAccountをクリックするとドロップダウンリストが表示され「newClient」を選択します。

NameとDescriptionを指定し(今回はdomoApiTestとしました)、Applicatipn Scopは何でも出来るように全てのチエックボックスを選択し「CREATE」ボタンをクリックしました。

そうすると、下図のようにClient IDとSecretが取得できました。

取得といっても画面に表示されるだけですのでメモします。これら値は後からでもMyAccountのドロップダウンリストから「Manege Clients」を選択する事で再確認が可能です。

curl表記をPower Automate Desktopではどのように指定するのか

$ curl -v -u {CLIENT_ID}:{CLIENT_SECRET} "https://api.domo.com/oauth/token?grant_type=client_credentials&scope={SCOPE}

DomoのAPIドキュメントで上記のような表記をPower Automate Desktopのアクションの一つである「Webサービスを呼び出します」に書く場合、下記のように指定すると期待通りの動きになりました。

  1. URL:https://api.domo.com/oauth/token?grant_type=client_credentials&scope=data workflow audit buzz user account dashboard
  2. メソッド:GET
  3. 受け入れる:application/json
  4. コンテンツタイプ:application/json

上図で「詳細」をクリックすると、下図のように追加の画面が表示されます。

下図で「HTTP認証」を使えるようにスライドすると、「ユーザー名とパスワード」欄が現れますので、Domoデベロッパーポータルから取得したClient IDとClient Secretを指定します。

アクセストークンの取得

上記までの指定で変数WebServiceResponceにアクセストークン文字列を含む返り値がjson形式でDomoから取得できます。アクセストークンの部分だけを"access_token"を指定して簡単に切り出せるように下図のように「JSONをカスタムオブジェクトに変換」アクションを用いて、変数WebServiceResponceを変数JsonAsCustomObjectへ変換します。

今回は下図のように%JsonAsCustomObject['access_token']%と指定し、取得したアクセストークンを画面にメッセージとして表示しました。

次回は取得したアクセストークンを用いてDataSet管理情報を取得しEXCELへ転記部分を掲載します。

pagetop