【DOMO】カスタムコネクタの作り方3(Define how data is processed編)

はじめに

このセクションでは、連携先サービスのREST APIを使用しつつ、Domo側へデータ送信することになります。 連携先のREST API仕様についてはご自身で調べていただくとして、取得したデータのDomoへの送信のなどで使用するコネクタ用のオブジェクト・メソッド一覧についてはこちらから確認してください。(最低限必要なメソッドについては文中で説明します)
データの取得スクリプトのデバッグ方法、Domoへのデータ送信テスト、コネクタ完成後のDomoの審査について一通りご説明しますが、Define how data is processedのステップにて行うデータ処理についてのドーモ社のドキュメントはこちらからご確認ください。

1. 連携先データの取得とDomoへのデータ送信

「Data processing script」に記載されたスクリプトを実行することで、他サービスのデータを取得し、Domo側へデータ送信することが出来ます。
ここに記載した処理は、大きく分けると、 ①前章で説明した「Configure selectable reports」で追加したパラメータの設定値を取得し、②Domoに送信する際のデータフォーマットを定義しておき、 ③「Configure user authentication」で取得されたトークンを用いて、連携サービスのデータを取得し、 ④取得データを、②で定義したデータフォーマットに設定する といった流れになります。 それぞれで使用しているDomo特有のオブジェクトについて説明します。

①パラメータの設定値を取得

「Configure selectable reports」セクションの「AVAILABLE REPORTS」に追加したreportのうち、どれが選択されたかを取得する場合、metadata.reportを使用します。 選択されたreport種別は文字列で格納されていますので、文字列操作で判定を行ってください。
reportとは別の任意のパラメータを追加した場合、metadata.parameters[{パラメータ名}]でパラメータの設定値を取得可能となります。
ただし、日付型の値取得の場合は、前章でも記載していますが下記のスクリプトで取得してください。

②データフォーマットの定義

取得したデータをDomoに送信する際のデータフォーマットを定義します。 具体的には、カラム名とデータ型の定義になります。
datagrid.addColumn({カラム名}, {データ型})で一列の定義が行われます。 データ型については、前述したオブジェクト・メソッド一覧のリンクにも記載がありますが、STRING, DOUBLE, DATETIME, DATEの4種類のみになります。
特に、定義開始~終了のようなメソッドはありませんので、好きなタイミングでaddColumを呼び出して問題ありませんが、addColumnで追加した順番は、データの設定時に意識する必要がありますので、まとめて定義しておく方が良いと思います。

③トークン取得・ログ出力

OAuth認証で取得したトークンを用いてAPIを利用する必要があるため、「Configure user authentication」セクションで取得されたトークンを利用するには、metadata.account.accesstokenを利用します。別認証で、例えばID/PASSやAPI KEYを利用したい場合も、metadata.account以下にパラメータがあります。

④取得データの設定

Domoへ送信するデータの設定はdatagrid.addCell({設定値})で行います。 addCellは、どの列にどの値を設定するといったkey, valueを指定するものではありません。 ②で定義した列順に、addCellの引数の値が設定されるようなイメージとなりますので、定義順に値の設定を行う必要があり、もちろん、対応するデータ型も合わせる必要があります。 1行のデータ設定が完了したら、endRowを呼んで、次行移行するといったイメージです。 endRowを呼ばずにaddCellをした場合、、、実際どうなるか確認していませんが、エラーになるか1行目の値が上書きされるかのどちらかかなと思います。(興味のある方はご自身でお試しください)
 
以上が、Domoにデータを送信するまでのおおまかな流れになります。
実際、endRowを呼んだ際にDomoにデータが送信されるのか、それとも「Data processing script」の処理がすべて終わってから送信されるのか確認する術がないのですが、処理途中でエラーになって処理中断する場合もあるわけで、endRowを呼ぶ度に送信しつつ、処理が終わったタイミングでcommitのような処理が行われているのかなと勝手に予想しています。
 
 

2. デバッグとデータ送信テスト

「Data processing script」にスクリプトを書いてる途中や、書き終わったあとで実際にプログラムを走らせてみるには「Run Script」ボタンを押下します。 ただし、特別な記載をしなければ、「Console」ウィンドウには何も表示されませんし、Domoへもデータ送信されません。 デバッグして、途中の変数の値を確認したり、エラー内容を表示させたりするには、DOMO.log({出力文字列})を使って、Consoleウィンドウへログ出力をする必要があります。また、テスト的にDomo側にデータを送信してDomo上でのデータ確認を行いたい場合は、「MORE OPTIONS」を開いて「Create/Update Dataset」にチェックを入れて「Run Script」で実行します。 実行が完了し、データ送信が完了すると、Domo側には「コネクタ名 Dev Studio Data」という名称のDatasetが作成されているので、そこから送信データの内容を確認してください。 なお、「Configure selectable reports」のreportを切り替えて、出力するデータの内容を変えて、それぞれDomoへデータ送信した場合、同名Datasetでしか送信されないため、あとに実行したデータでDatasetの内容が上書きされてしまいますので、どちらのデータもDomo上で見たい場合や、データ結合して確認したい場合は、先に作成したDatasetをエクスポートして別名でインポートし直す必要があります。
デバッグする際は、「Configure user authentication」セクションで、Get Access Tokenボタンを押下し、メモリ上(metadata.account.accesstoken)にトークンが設定されてる必要があります。 都度、押下する必要はありませんが、永続して保持し続けるものではないので、もともと問題のなかったAPI呼び出しで400エラーが出るような場合などは、トークンを取得し直してみてください。
 
※「Create/Update Dataset」と同じ並びに「Save Database Between Runs」というオプションがあります。”実行中にデータベースに保存する”という意味でしょうけど、実際に何が行われるためのオプションなのか分かっておりません…ユースケースがわかる方、教えて頂けると大変うれしいです…

3. コネクタの審査とその他諸々

コネクタ開発のためにこの記事を読まれてる方は、ひとまず、自社内だけで使うコネクタを目的としていて、広くすべてのDomoユーザーが使えるようなコネクタの開発をスコープとしていないと思います。 自社内だけで使用するコネクタであれば、開発完了してすぐに使えるものと思っていましたが、コネクタの種類によっては、Domo側の審査を経る必要があります。(自社コネクタであっても審査が必要な条件はこちら
今回はOAuth認証であるため、審査が必要となります。 「SUBMIT FOR PUBLISHING」を押下すると、Connector Submissionウィンドウが表示されます。 ここで、「Connector Visbility」を”Private to your company”を選択するのに加えて、「Additional Instructions」に連携先サービスのログインID/PASSを一緒に送付する必要があります。 これは、Domo側のテスト時に実際にコネクタを登録し、OAuth認証を行って、データ取得までを試すためにOAuthを通す必要があるためかと思われます。 実アカウントでDomo社がアクセスしてくるため、必要に応じて、実アカウントではなくテスト用アカウントを作成して、そちらのID/PASSを共有するのが良いかと思います。 もちろん、テスト用アカウントでも必要に応じて最低限のデータアクセス権限を付与して、コネクタからのデータ取得に問題が無いことを確認してください。
 
Domo側がどのようなテストが体系的になされているか不明ですが、実際、審査時にかなりの頻度でAPIが呼び出されていたことがありました。 そのコネクタは、有料のAPIサービスを利用していて、利用回数制限もあり、急激にAPIを利用されたことで連携先サービス側からアラートが送信されたことで発覚し、急ぎ、Domo側にこれ以上高頻度でコネクタ経由でのデータ取得しないようメールをして審査を止めてもらった経緯があります。そういった事情があって、事前に考慮しておいて欲しいことがあるのであれば、「Addtional Instructions」にて情報共有をしておく必要があるかと思います。
また、審査中に、OAuth認証のアプリのリダイレクトURIに、このURLを足してくださいというメールが来るかと思います。DomoのドキュメントではリダイレクトURIに”https://api.domo.com/builder/oauth.html”を指定してくださいという記載はありますが、審査用のリダイレクトURIの指定はドキュメントには見当たりませんでしたが、現状2コネクタを申請して、どちらも同様に審査用にURI追加依頼のメールが来てますので、依頼メールが来る確率は高いかと思います。(常に必要なのであれば、ドキュメントをちゃんと整備して欲しい…)
審査自体は30日以内に完了するようですが、スクリプトや設定に不備があった場合、そのやり取りが発生するため、30日以上かかる可能性もあるかと思います。 自社内のみで使うためのコネクタが、開発完了から即リリースして使えないというところにストレスを感じるのも事実ではありますが…コネクタ開発の際は、審査プロセスの期間も考慮した上でスケジュールを組むようにしましょう。
📊
・会社のデータをもっと有効活用をしたい ・Domoに取り込みたいデータソースがある ・Domoの効果的な可視化についてもっと知りたい ・組織においてのDomoの定着化をもっと推進したい ・新しいKPIを作りたいが、自信がない アタラにはDomoを含むBIツールのエキスパートが在籍しております。 このような課題をお持ちの方は、ぜひお気軽にこちらまでご相談ください。
 
この記事をシェアする