カスタムオブジェクトのフィールドデータを、メール本文で呼び出す | Community
Skip to main content
May 31, 2018

カスタムオブジェクトのフィールドデータを、メール本文で呼び出す

  • May 31, 2018
  • 4 replies
  • 675 views

JMUGのみなさま

お世話になっております。リクルートキャリアの藤井です。

以下スレッドで質問させていただいた内容を解決しましたので、

内容を整理して投稿させていただきます。

カスタムオブジェクトの内容をメールで置換文字列的に呼び出したい

(山田様、大廻様、福塚様、大里様、アドバイスいただきありがとうございました)


≪実現したきこと≫

リード(toC)に対し、複数の求人情報をメールで送る

≪作り方ざっくり≫

①カスタムオブジェクトに[求人送付テーブル]をインポート

 └[求人送付テーブル]は、[リード] × [求人(複数)]がユニークkeyとなる

②カスタムオブジェクトのフィールドを表示させるマイトークン(メールスクリプト)を作成

③メールエディタでマイトークンの呼び出しを書く

≪作り方詳細≫

①カスタムオブジェクトに[求人送付テーブル]をインポート

・こんなcsvファイルを作成する

・[管理]→[カスタムオブジェクト]に入る

・[カスタムオブジェクトの新規作成]からテーブルを作成する

 テーブル名は適当に命名して作成

・リードに紐付けるフィールドを作成する

 └[カスタムオブジェクトのjoboffer_no]と[リードテーブルのA_求職者No]が

  紐付けたいカラムなので、データタイプをリンクにして作成する。

 (※ SQLで言う所の、JOINする時のON句の様なイメージ) 

・ユニークkeyとなるフィールドを作成する

 └[重複削除フィールド]を[はい]にして作成

・その他のフィールドを作成する

 └重複削除フィールド]を[いいえ]にして作成

・csvをインポートする

 └[データベース]から[カスタムオブジェクトデータのインポート]を選択

 └ファイルやカスタムオブジェクトを指定。

  [デデュープモード]は、カスタムオブジェクトのユニークkeyを指定。

・最後に、カスタムオブジェクトを承認する

 └承認しないと使えないよう。

・リード詳細で確認

 └以下の様に見えてたら紐付け成功。

②カスタムオブジェクトのフィールドを表示させるマイトークン(メールスクリプト)を作成

・[マイトークン]から[メールスクリプト]をドラッグ&ドロップして、新規作成する

・Velocityスクリプトを書く

 └以下の様な感じ。

  {$test_joboffer_cList・・・のところがややこしいので、

  カスタムオブジェクトのカラムをドラッグ&ドロップして作成するのが肝。

  (※ここをミスって上手く呼び出せませんでした・・・)

③メールエディタでマイトークンの呼び出しを書く

・ さっき作ったメールトークンを挿入する

・エディタはこんな感じ

・プレビューで見るとこんな感じ

 └プレビューで対象の顧客を選んでいないと、

  メールスクリプトが反映されないので注意。

≪注意点、気になり点≫

・段ズレ注意

 └Velocityの ${test_joboffer_cList.get(0).corp_name}) という文は、

  該当するレコードから●番目を取ってこい的な意味っぽいですが、

  nullは飛ばされてしまうようです。。

 └例えば、以下のようにnullがある場合、

  [work_locationカラムの3番目のレコードを持ってこい]というスクリプトを書いても、

  nullではなく、その下の東京都台東区を持ってきてしまう。

 └対策としては、

  そもそもnullを許容しないテーブルの構成にするか、

  nullのものは"_"とかのダミーの値を入れておいて、

  Velocityの中で["_"だったらnull]みたいなif文で回避するのが良さそう。

まだ商用で試してないので、他の落とし穴があったりするかもしれませんが。。。

抜け漏れや間違っている点があればご指摘いただけますと幸いです。

どうぞよろしくお願いいたします。

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

4 replies

Taishi_Yamada
Level 6
May 31, 2018

無事に成功されたようで、良かったです。まとめも素晴らしいですね。

まずは、Custom Objectの存在を知ると「えー!?こんなのあるんだ!便利そう!」と一瞬、喜ぶが、よくよく仕様を調べていって「なんだ。。。。これしかできないんだ」と落胆するという話は、よくある話なんですが、それも踏まえて過度に期待しすぎなければ、活躍する場面は十分ありますからね。

他にCustom Objectでサッと思いつく話を簡単に列挙しておきます。

・Custom Objectの値を参照するTrigger/Filterが使えるようになりますね(has / added toなど)

・DedupのFieldに設定したFieldで、同じ値のレコードを新たに書き込んだ(インポートした等)ときに、何がおきるか? → 基本は元のレコードが消えて新しいレコードが残る

・他の技としてlinkをCompany Objectにする話、Linkをmany to manyで使う話(個人的にそこまでするなら別のこと考えることを推奨したいですが・・・)

・Field数には上限あります(諸説あったけど、たしか50 (49?)が上限)

・Custom Objectを一度Approveした後で、Field定義の再編集には制限が色々とあるので要注意(最初の定義から変えない。変えられない。くらいの覚悟がちょうどいいですかね)

・Marketo上のSmart Campaignを使って、Custom Objectの値を書き換える/レコードを追加する。といった制御はできません。(値の変更はAPI or Importのみ)

・Custom Objectに入っている値のExportはできません。

・Marketoと連携する各種ツール/システムは、Custom Objectに対応している場合も結構多いですね。

・CRM(Salesforce)とのSyncはできません。(そのかわり、Salesforce Object Syncという別の話がある)

・Tokenで値の参照はできないので、EmailのAsset上で値を利用するにはEmail Scriptingを利用する必要があります。

意外と理解する、使いこなす(運用する)のが大変なわりに、得られるものが・・・・。という話に陥ることもあるので、安易に飛びつきすぎないことをおすすめしてますが、使い所を間違えなければ活躍してくれる機能ですね

June 1, 2018

@Taishi Yamada​様

Tipsありがとうございます!

大変参考になります!

一点気になったのですが、カスタムオブジェクトの[レコード削除]ってできないのでしょうか・・・?

・この例でいうと、

 昨日送った求人sと、今日送りたい求人sは変わるため、デイリーで洗い替えたいのです。

・昨日送った求人が8レコードあって、今日送りたい求人が7レコードだった場合、

 csvインポートしたら上から7レコードが更新されるだけで、

 8レコード目は残ってしまいますよね・・?

・レコード削除ができれば、一旦全消ししてからアップし直すのが良いかなーと思い、、、

Taishi_Yamada
Level 6
June 1, 2018

結論はこちらに。。。。↓(英語ですが)

Deleting Marketo Custom Object record data

簡単にいうと「APIなら削除できますよ。API使わないとできません。」ということです。

あとは、ちょっと無理やりですが、

dedupに設定したIDで、ターゲットとしたいレコードと同じIDを入れて、各Fieldの値をNULLにしておけば、レコードそのものは消せないが、Fieldの値はNULLになったような。。。。(いや。。。ちょっと、記憶に自信なし。要確認です)。とはいえ、これでもレコードそのものが消えるわけではないですけどね。

こういうことも含めて、Custom Objectを使うなら結局APIによる制御に頼る場面は多々なので、API使わずにというのは利用シーンが結構限定されると思っています

June 4, 2018

@Taishi Yamada​様

ありがとうございます。

本格実装ではAPI、実験レベルなら記載いただいたような運用で回せそうですね。

velocityの中身も汎用性高そうなスクリプト書けましたら、

また追記させていただきます!