<\/HEAD>
最近、関連レコードに関する情報を送信するためのポップアップ内のメールリンク作成の手伝いを依頼されました。こちらに投稿されたメンテナンス履歴の取得例を基に、その履歴をメールで送信するボタンを追加しましょう。 <\/P>
<\/P>
mailtoリンクにはいくつかの要素が含まれる場合があります:<\/P>
- メールを送信する宛先のメールアドレスまたは複数のメールアドレス<\/LI>
- オプションでCCおよび/またはBCC<\/LI>
- 件名<\/LI>
- 本文<\/LI><\/UL>
<\/P>
ボタンに使用するHTMLは非常にシンプルです。mailtoリンク(expression\/expr1)を持つアンカーと、その中にボタンがある構成です(5行目から7行目を参照):<\/P>
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/SPAN>b<\/SPAN><SPAN class="punctuation token">><\/SPAN><\/SPAN>メンテナンス履歴:<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><\/<\/span>b<\/span><span class="punctuation token">><\/span><\/span><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span>
{expression\/expr0}
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span><SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span>
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>b<\/span><span class="punctuation token">><\/span><\/span>メール履歴:<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><\/<\/span>b<\/span><span class="punctuation token">><\/span><\/span> <SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>br<\/span> <span class="punctuation token">\/><\/span><\/span>
<SPAN class="token tag"><SPAN class="token tag"><SPAN class="punctuation token"><<\/span>a<\/span> <SPAN class="attr-name token">href<\/span><SPAN class="attr-value token"><SPAN class="punctuation token">=<\/span><SPAN class="punctuation token">"<\/span>{expression\/expr1}<SPAN class="punctuation token">"<\/span><\/span><SPAn clasS= "puncTuatIon toKen" > > < \/ SPAN >
<SPAn clasS= "puncTuatIon toKen" > < img < \/ SPAN > < SPAn clasS= "attr-name toKen" > alt < \/ SPAN > < SPAn clasS= "attr-value toKen" > = " < \/ SPAN > Email < SPAn clasS= "attr-value toKen" > " < \/ SPAN > < SPAn clasS= "attr-name toKen" > height < \/ SPAN > < SPAn clasS= "attr-value toKen" > = " < \/ SPAN > 50 < SPAn clasS= "attr-value toKen" > " < \/ SPAN > < SPAn clasS= "attr-name toKen" > src < \/ SPAN > < SPAn clasS= "attr-value toKen" > = " < \/ SPAN > http:\/\/icons.iconarchive.com\/icons\/iynque\/ios7-style\/1024\/Mail-icon.png < SPAn clasS= "attr-value toKen" > " < \/ SPAN > < SPAn clasS= "attr-name toKen" > width < \/ SPAN > < SPAn clasS= "attr-value toKen" > = " < \/ SPAN > 50 < SPAn clasS= "attr-value toKen" > " < \/ SPAn > \ / > < \/ span>
<span cLass = "toKen taG" >< span cLass = "toKen taG" >< span cLass = "puNctuAtioN toKen" ><\/< / span>a<span cLass = "puNctuAtioN toKen" >>< / span ><<EMOJI_0> >< span cLass = "line-numbers-rows" >< span ><<EMOJI_1> >< / span >< span ><<EMOJI_2> >< / span >< span ><<EMOJI_3> >< / span >< span ><<EMOJI_4> >< / span >< span ><<EMOJI_5> >< / span >< span ><<EMOJI_6> >< / span >< span ><<EMOJI_7> >< / span >< / span >< / code >< / pre >< p >< / p >< p>ユーザーがポイントをクリックしたときのポップアップはこのようになります(スペイン語と英語が混ざっていてすみません):< / p >< p >< img __jive_id = "452819" クラス = "image-1 jive-image" 高さ = "430" src = "https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/452819_pastedImage_1.png" 幅 = "769" />< / p >< p >< / p >< p>ユーザーがボタンをクリックすると、マシンにメールアプリケーションが設定されていればメールが作成されます:< / p >< p >< img __jive_id = "452820" クラス = "image-2 jive-image" 高さ = "581" src = "https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/452820_pastedImage_2.png" 幅 = "768" />< / p >< p >< / p >< p>Arcade式を作成して情報を取得し、このメールを作成するように構造化する方法について詳しく見ていきましょう。関連テーブルへの接続と消火栓IDに基づくテーブルのフィルタリング部分はすでにこちらで説明されています:(<A _jive_internal = "true" href = "https:\/\/community.esri.com\/docs\/DOC-12773-using-featuresetby-functions-in-arcade-to-drill-down-to-other-layers-and-tables" target = "_blank">ArcadeでFeatureSetBy関数を使用して他のレイヤーやテーブルにドリルダウンする方法</A>)ので詳細は省きます。同じGetHistory関数を使用しましたが、13行目に小さな重要な変更があります:< / p >< pre クラス = "lia-code-sample line-numbers language-none" >< code >Function GetHistory(hydrant_id) {
var tbl = FeatureSetByName($map, "Maintenance");
Console(tbl);
var sql = "COD_HIDRANTE = '" + hydrant_id + "'";
Console(sql);
var tbl_filtered = Filter(tbl, sql);
Console(Count(tbl_filtered));
if (Count(tbl_filtered) > 0) {
var history = "以下は消火栓 " + hydrant_id + " のメンテナンス履歴です:";
for (var maintenance in tbl_filtered) {
var txt_date = Text(maintenance.Fecha_Mantenimiento, ' - (Y/MM/DD) ');
var txt_man = txt_date + maintenance.Mantenimiento;
history += TextFormatting.NewLine + txt_man;
}
} else {
var history = "消火栓 " + hydrant_id + " の履歴はありません。";
}
return history;
}
<span cLass= ... >私は「TextFormatting.NewLine」を定数ではなく文字列として追加しています。実際、この文字列は任意のユニークな内容でもよいのですが、私は選びました この方法で行います。したがって、結果の文字列はすべての履歴を1行に含み、テキスト "TextFormatting.NewLine" は後でURLで使用できるものに置き換えられ、メール内で改行として機能します("%0D%0A")。
式のもう一つの部分は、この関数を呼び出し、メールの他の部分を定義するために使用されます:
<SPAN class="keyword token">var</SPAN> hydrant_id <SPAN class="operator token">=</SPAN> $feature<SPAN class="punctuation token">[</SPAN><SPAN class="string token">"COD_HIDRANTE"</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> email <SPAN class="operator token">=</SPAN> <SPAN class="string token">"someone@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> cc <SPAN class="operator token">=</SPAN> <SPAN class="string token">"other_one@someplace.com;other_two@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</SPAN> bcc <SPAN class="operator token">=</SPAN> <SPAN class="string token">"secret_person@someplace.com"</SPAN><SPAN class="punctuation token">;</SPAN>
<SPAN class="keyword token">var</span> subject <span class="operator token">=</span> <span class="string token">"Maintenance history of Hydrant "</span> <span class="operator token">+</span> hydrant_id<span class="punctuation token">;</span>
<SPAN class="keyword token">var</span> body <span class="operator token">=</span> <span class="token function">GetHistory</span><span class="punctuation token">(</span>hydrant_id<span class="punctuation token">)</span><span class="punctuation token">;</span>
<SPAN class="keyword token">var</span> params <span class="operator token">=</span> <span class="punctuation token">{</span>cc<span class="punctuation token">:</span> cc<span class="punctuation token">,</span>
bcc<span class="punctuation token">:</span> bcc<span class="punctuation token">,</span>
subject<span class="punctuation token">:</span> subject<span class="punctuation token">,</span>
body<span class="punctuation token">:</span> body<span class="punctuation token">}</span><span class="punctuation token">;</span>
<SPAN class="keyword token">var</span> url <span class="operator token">=</span> <span class="string token">"mailto:"</span> <span class="operator token">+</span> email <span class="operator token">+</span> <span class="string token">"?"</span> <span class="operator token">+</span> <span class="token function">UrlEncode</span><span class="punctuation token">(</span>params<span class="punctuation token">)</span><span class="punctuation token">;</span>
url <span class="operator token">=</span> <span class="token function">Replace</span><span class="punctuation token">(</span>url<span class="punctuation token">,</span> <span class="string token">"TextFormatting.NewLine"</span><span class="punctuation token">,</span> <span class="string token">"%0D%0A"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
<SPAN class="keyword token">return</Span> url<span class="punctuation token">;</span><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>このArcade式の第2部で何をしているか説明しましょう:
- 1行目で消火栓のIDを読み取ります。
- 2〜4行目でメール送信先(CC2件とBCC1件を含む)を定義します。
- 件名は基本的に変数hydrant IDを含むテキストです。
- 本文は上記で説明したGetHistory関数を使って生成されます。
- 7〜10行目ではparamsという辞書を作成し、プロパティcc、bcc、subject、bodyに3〜6行目で定義した変数cc、bcc、subject、bodyの値を割り当てます。
- 12行目では新しいArcade関数UrlEncode(バージョン1.7)を使い、URLパラメータを正しくエンコードします。
- 13行目ではテキスト "TextFormatting.NewLine" を "%0D%0A" に置き換えます。これによりメール本文内で必要な場所に改行が作成されます。もしこれをUrlEncodeの前に行うと、テキストが "%250D%250A" に変換され、おそらく改行が機能しなくなります。
ご質問があれば、「Add a Reply」ボタンを使ってお知らせください。
以下に使用した最終コードを示します:
Function