WebhookでSpreadSheetと連携する方法 Part2
JMUGのみなさま、こんにちは大里です。
最近はNetflixの「クィア・アイ」を見て、泣いたり笑ったりしています。
さて、前回の続きで具体的な実装方法について紹介をさせていただきます
MarketoからWebhookを使ってデータを飛ばす方法について入っていきます。
-----------------------
【1】まずはこの記事を一読むべし
https://qiita.com/kunichiko/items/7f64c7c80b44b15371a3
いきなり他力本願ですが、とある方がこの記事をFacebookでシェアしていたので何となく読んでいたら
「おっ!これってMarketoでもいけるんじゃね?」と思ったのがそもそもの始まりです。
この記事を読んで理解できれば、本連携の90%は完了していると思って間違いないです。
【2】SpreadSheet用意する(これは説明不要)
【3】スクリプトエディタを立ち上げる(これも説明不要)
【4】スクリプトエディタに下記のコードをコピペ
(1)のページにあるスクリプトをそのまま使用する
// POSTリクエストに対する処理
function doPost(e) {
// JSONをパース
if (e == null || e.postData == null || e.postData.contents == null) {
return;
}
var requestJSON = e.postData.contents;
var requestObj = JSON.parse(requestJSON);
//
// 結果をスプレッドシートに追記
//
var ss = SpreadsheetApp.getActive()
var sheet = ss.getActiveSheet();
// ヘッダ行を取得
var headers = sheet.getRange(1,1,1,sheet.getLastColumn()).getValues()[0];
// ヘッダに対応するデータを取得
var values = [];
for (i in headers){
var header = headers[i];
var val = "";
switch(header) {
case "date":
val = new Date();
break;
case "mimeType":
val = e.postData.type;
break;
default:
val = requestObj[header];
break;
}
values.push(val);
}
// 行を追加
sheet.appendRow(values);
}
【5】Webアプリとしてとして公開
詳しくは【1】のページに書いてある内容を参考に
**** 注意点 ****
プロジェクトバージョンを新しいものにしないといけないという更新が反映されません。
ちなみに、私はソースコードを編集しても変更が反映されないので
2時間以上悩んでしまいました。お気をつけください。
ここまでやれば、あとはMarketoからWebhookでPostするだけです。
【6】Webhookを作成する

URLの設定
https://script.google.com/macros/s/AKfycbz7GhdcCsFPz8RCr_qA7RLK68Qe5vlCzWTlrkh3JRxxxxxxxx/exec
上記のURLはサンプルですので「ウェブアプリケーションとして導入」に記載されているURLを使ってください。
・リクエストタイプ ;POST
・テンプレート
{
"key1" : "{{campaign.name}}",
"key2" : "{{lead.First Name}}"
}
Webhookで飛ばしている内容ですが、トークンを使うことが可能です。
必要な内容に合わせてセットしてください。
【7】スマートキャンペーンの設定
Webhookはトリガーでのみ動かせますので注意してください。
-----------------------
以上です。うまく行けば下記のようにSpreadSheetに表示されるはずです。

これでマルケトのデータをスプレッドシートに飛ばすことができます。
試してみてください。
次回Part3(最終回)では、上記の設定をカスタマイズする方法についてお伝えします。