2022/08/16

Salesforce内でJavaScriptのconcat関数を利用する方法とは?

 
  

concat関数とは

concat関数とは文字列を連結するための関数です。本記事ではSalesforceでconcat関数がどのような使われ方をするのか紹介します。 SalesforceではMarketing Cloud(マーケティングクラウド)というマーケティング全域の活動を自動化するツールを提供しています。 このMarketing Cloudで使用されているスクリプト言語のAMPscriptとJavaScriptを使うことで、モバイルのプッシュ通知やメール、SNS等のコンテンツに動的なデータを表示できるようになります。 JavaScriptでも頻繁に利用されているconcat関数ですが、本記事ではAMPscriptの中で利用されるconcat関数の利用方法を紹介していきます。

concat関数を利用して文字列を連結させる方法

AMPscriptでconcat関数を使用すれば、AMPscriptからJavaScriptに変数を渡したり取得する時に文字列を連結することが可能です。 concat関数はadd(1,2)関数の代替方法として使用することもできます。つまりJavaScriptの「add(1,2)」と「concat(1,2)」は同じ役割があります。 構文は以下の通りです。
Concat(1, 2)
構文にある1、2はともにstring型で、連結する場合は「’(シングルクォーテーション)を利用して、(,)ピリオドで区切ります。
%%=Concat(‘1’,‘2’,’3’)=%%
表示結果
123
123は文字列として順番に連結されます。 concat関数に記述するソース名は形式が異なるとエラーが発生します。 例えば以下のような記述はエラーになります。
%%=Concat([‘1’,‘2’,’3’],[‘1’,’2’])=%%
もしconcat関数内でエラーが発生する場合は、ソース名の形式が異なっていないか疑ってみてください。

concat関数をAMPscriptの動的リンク名で利用するための記述

AMPscriptを使用すると、携帯のプッシュ通知にステータスごとに異なるデータを表示させたり、異なるメールの送信先に動的な名前を登録させたりと便利な機能があります。これらの便利な機能を利用するためにはAMPscriptの動的リンク名を使用します。 実際にSalesforce上ではどのような表示結果が得られるか見ていきましょう。 Marketing CloudのContent Builderを開き、「作成」ボタンを押すと「コンテンツブロック」が選択できますのでクリックしてください。更に「フリーフォーム」をクリックしてください。コードスニペットに以下を記述してみましょう。
SET @firstname = 'Yamada'
SET @lastname = 'Taro'
%%=Concat(@firstname,"" "",@lastname)=%%
表示結果
Yamada Taro
上記の記述では変数値をSETで登録して、@firstname に’Yamada’、 @lastname に’Taro’をそれぞれ設定しています。 %%=Concat(@firstname,”” “”,@lastname)=%%では文字列として連結する変数になりますので、登録した変数値の結果を連結し文字列として出力しています。

AMPscriptの動的リンク名とは?concat関数を利用するメリットを紹介

AMPscriptの動的リンク名とは動的にリンクに割り当てられた名前を設定できるリンク名です。このときHTMLのエイリアス属性を設定する時にconcat関数が使用されます。 例えば、以下の記述では動的リンク名にconcat関数を使用して、リンクごとに異なるリンク名を付与しています。
< a href=""http://www.sample.com/key/p...ID=C12345xxx0000"" target=""new"" alias=""%%=CONCAT(Amp,' Acript')=%%"" >
動的なデータを表示するためには、AMPscriptの動的リンク名を使用します。 AMPscriptの動的リンク名とは動的にリンクに割り当てられた名前を設定できるリンク名です。このときHTMLの※エイリアス属性を設定する時にconcat関数が使用されます。 ※エイリアス属性とはHTMLの要素にalias=””という属性を記述して利用します。例えば異なるメールの宛先に送信した場合、リンクに対しての応答を追跡し後でどのユーザーがリンクに反応したのか測定するのに役立ちます。 表示結果は以下のようになります。
user1 Acript
user2 Acript
concat関数は文字列を結合させるための関数ですので、プッシュ機能によく利用されます。AMPscriptで関数を呼び出す場合は、関数の開始と終了をパーセント記号で囲う必要があります。
 alias=""%%=CONCAT(Amp,' Acript')=%%
つまり構文は以下の通りです。
[content] %%[script]%% [content]
関数を囲んでいる「%%=」と「%%」はそれぞれ意味が異なります。 「%%=」=をつける場合はAMPscriptブロックの外側で使用する必要があり、 =がついていない場合はブロックの内側で使用する必要があります。 ブロックの内側で使用する必要性とは、例えばAMPscriptのSETやIFの中で使用する場合は「%%」のように記述するといった覚え方で良いでしょう。

Visualforceでconcat関数を利用したカスタムボタンを作成する際の記述例

一度AMPscriptから離れてconcat関数への理解を深めるために、Visualforceでconcat関数を使用して、Salesforce のカスタムボタンを作成する例を見てみましょう。 Visualforceでは実際にどのようなケースで利用されるのか紹介していきます。 以下に記載したコードの例では、契約している商談先の取引先責任者(Contract__c)から、取引責任者名と取引先名を連結させて表示させるカスタムボタンの作成をしているところを一部抜粋して紹介しています。
{!REQUIRESCRIPT(""/soap/ajax/38.0/connection.js"")}
{!REQUIRESCRIPT(""/soap/ajax/38.0/apex.js"" )}

var connection = sforce.connection;
var newContract = new sforce.SObject(""Contract__c"");
var name_a =  '{!Opportunity.Contract_Type__c}' ;
newContract.Name = name_a.concat('{!Opportunity.Account}');
result = sforce.connection.create([newContract]);
{!REQUIRESCRIPT(""/soap/ajax/38.0/connection.js"")}
{!REQUIRESCRIPT(""/soap/ajax/38.0/apex.js"" )}
REQUIRESCRIPTとは、Salesforce のカスタムボタンを作成する時に、Apexを実行するための宣言をする記述です。つまりJavaScriptを参照する役割があります。
var connection = sforce.connection;
上記の記述ではSalesforceとの接続をconnectionに代入しています。
var newContract = new sforce.SObject(""Contract__c"");
オブジェクトAPI 参照名Contract__c””をSObjectのIDとして登録しています。(SObjectはSalesforce のレコード内にある各項目にアクセスするための記述です)
newContract.Name = name_a.concat('{!Opportunity.Account}');
こちらの記述では、取引責任者名(Opportunity.Contract_Type__c)を代入したname_a変数と、取引先名(Opportunity.Account)を連結してnewContract.Nameに代入しています。 このようにconcat関数を利用すれば、文字列を連結することができます。

concat関数を利用すれば文字列の連結が可能

Salesforceでのconcat関数は、JavaScriptで異なる文字列を連結した状態で変数を取得したり、AMPscriptの動的リンク名を取得する場面で利用されています。 最後に構文を復習しておきましょう。
Concat(1, 2)
エラーが発生している場合は、Concat関数に記述するソース名の形式が異なっていることがよくあります。 エラーが起きた際の参考にしてみてください。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】