ナニコレ
https://community.looker.com/general-looker-administration-35/looker-actions-marketo-7796
この記事を参考に、Lookerを使ってBigQueryに入っているデータでMarketoのリード情報を更新したので、そのメモ。
前提
私はLookerユーザーのデータアナリストで、Marketo側のことはよくわかっていない
が、簡単に実装できたという話をしたい。
実装方法
上記記事を適宜参照しつつ解説していきます。
まずはLooker側でMarketoActionを有効化する
Admin > Platform > ActionsにアクセスするとMarketoのアイコンがあるので"Enable"ボタンを押して有効化する
次にMarketo側でもAPIを有効化&接続情報を確認
Marketo側設定の詳細はこの辺を参照のこと。
IP制限をかけている場合、ここでLookerインスタンスのIPアドレスをホワイトリストに入れておきましょう。(※ここでめっちゃ詰まった。後述。)
各インスタンスのIPアドレスはこちらのページにまとまってます。
上で確認した接続情報をLookerのMarketoActionの設定に入力
viewファイル内でLooker項目とMarketo項目の対応関係を定義
画像のように、tagsパラメータで定義します。
Marketo側の項目はREST API名を指定するように注意してください。
あとは可視化して送信 or スケジュール設定するだけ!
- Lookerでいつものように更新のキーとなる項目、更新したい項目を可視化(LookでもDashboardでもExploreでも良さそう)
- 右上の歯車から送信 or スケジュールを押す
3. データの移動先でMarketoを選択し、Lead Lookup Fieldで更新のキーとなる項目を入力する(※Marketo側の名称を書く必要があるので注意)
4. Additional ActionとしてCampaignやListにデータを追加したい場合はそのIDを設定する(ListID等はURLからわかるらしい)
5. 高度なオプションで"すべての結果"にするのがオススメ。表の結果にしてしまうとLookerで可視化できた行の分しか更新されない(はず)
6. 送信!
詰まったところ
上述したが、Looker側のIPアドレスがよくわからずめちゃくちゃ詰まった。
ChatSupportにも問合せ、間違いなく弊社のLookerインスタンスは日本、東京(asia-northeast1)ぽいのだが、どうしてもそのIPだと弾かれてしまった。しかもエラーコードは603(権限不足)で余計に混乱。
Marketoに問い合わせて、APIを叩いたタイミングでアクセスがあったIPを教えてもらってホワイトリストに追加するという力技で解決。
SSHトンネルを設定していると上で紹介したページで書かれているIPアドレスではなくなる可能性があると教えてもらったが、果たして…いまだに真相がわかっていない。
↓
[2021/04/16追記]
LookerActionはLooker > ActionHub > Endpointという構成で実行されるとのことで、
最終的にMarketo側のホワイトリストに登録すべきIPはActionHubのIPでした。なるほど。
https://docs.looker.com/ja/sharing-and-publishing/action-hub
エラーを吐く
Marketo側の設計が余程うまく行っていない限り、エラーと向き合い続けることになると思います。
メールで通知されるエラーメッセージは情報量が少ないので、Admin > Server > Logでエラーログを確認しましょう。
僕が出会ったログは以下の2つでした。
- Access denied(code:603) :上の通り、ホワイトリストにLookerのIPアドレスが足りなかったがゆえのエラーでした
- keyとなる項目がないエラー:Lead Lookup Fieldに指定した項目がMarketo側でnullだと起こるっぽいです。
その他注意点
API RequestはbulkではなくLooker側で可視化したリスト一行一行で行われるっぽく、Marketo側のMaxRateLimitにひっかかってしまった。これも状況証拠から推測したにすぎないので、是非詳しい方いたら教えていただきたいです。bulkで実行されるようになったら嬉しい…