追加オプションを使用しないで、定員を超えたら自動的に申込みフォームへのリンクを閉じるプログラム【Marketo API, PHPサンプルコード】 | Community
Skip to main content
Shotaroh_Horigu
Level 1
May 15, 2020

追加オプションを使用しないで、定員を超えたら自動的に申込みフォームへのリンクを閉じるプログラム【Marketo API, PHPサンプルコード】

  • May 15, 2020
  • 0 replies
  • 113 views

件名に書いたように、これまでAPIを使用して自動で定員に達したら申込みの受付を終了するプログラムを作って使っていました。ただ、会社の都合でAPIを使用することができない(させてもらえなくなった)ことになってしまいました。

ただ、せっかく作ったこのコード。このまま眠らせてしまうのは悔しいと思ったので、こちらで共有させてもらいます。

 

以下サンプルコード

https://github.com/jantyran/close_mkto_campaign_link

 

これでできることは基本的にキャンペーンにいるメンバー数をカウント数と、こちらで指定した人数を比較しそれによってフォームページへ移動させるか、定員に達したことを知らせるに振り分けることだけです。

(ついでにサンプルコードではイベントの日付がすぎていればリンクを閉じるよう機能もつけています。)

 

なので、追加の自動クローズオプションの完全な代用にならないということと、またMarketoのDBの作り方からリード数をたくさん持っている場合判定までに時間が要するという懸念点があります。

 

 

#サンプルコード動作必要条件

こちらのサンプルコードを動かすために必要なのは、PHPが動くローカル(またサーバー)環境と、marketo APIになります。

# 準備

reception.php内の以下の入力箇所に必要なAPI情報を入力します。

\\\

class MarketoProgram{
// input Marketo API info.
private $host = "CHANGE ME";
private $clientId = "CHANGE ME";
private $clientSecret = "CHANGE ME";
public $id;//id of campaign to retrieve

 

....


}

\\\

 

そして、sample.html内の該当箇所に情報を入力してください。

最初の引数の日付は今よりも先の日付を入力していただき、page urlの箇所に該当の申込みページのURL、下記では100になっている引数に定員人数を、そして#ME0000A1と書かれているところにプログラムIDとその前後が記載されたものをご記入ください。

 

\\\

...

 

// args: date, time, place, Orgnizer, formlink, maxNumber, MarketoProgramId, open/close

handsonReceptionTable ( '2020/05/30', '10:00-12:00', 'Budo-kan', 'my-company', 'page url', '100', '#ME0000A1', true );

 

...

\\\

 

* 本来programidはここでいうEとAの間の0000の部分らしいのですが、URLからそこだけコピペするのもめんどくさいので、#MEから始まってA1までのところをコピーして貼り付けたらプログラム内で切り取ってIDを抽出してくれます。

 

こちらであとはsample.htmlにアクセスしていただければ動作を確認できるかと思います。

* もしかしたら動かないかもしれません。というのも今現在APIを使用することができなくなってしまったのでこちらのサンプルコードへ書き換えてから動作テストをしていないのでどっか細かいところでエラーが出てるかもしれないです。

 

#プログラムの中を少し説明

handsonReceptionTable関数でテーブルコードを呼び出します。そこで呼び出した「申込み」からcampaign IDと定員人数情報を持ってredirect.phpへ一旦飛びます。そこからAPIを使用してリードデータベースへアクセス、該当のキャンペーンに申込みをしているリードを抽出し、その数をカウントして定員数と比較し、判定結果に適切なページへリダイレクトさせます。

 

リードデータベースにあるすべてのリード情報へアクセスすることになるので、リード数によっては処理が重くなります。プログラムキャンペーンから紐づけられているリードIDだけを読み取るというようなプログラムにできればもっと処理は軽くなるはずですが、制作当時にはうまくそれができませんでした。もしこの辺のヒントがあるとスッキリできますので、改良できそうであればヒントを教えてください。

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.