このページでは、アクション実行時に、任意のメールテンプレートをSmartStageを利用しないユーザーに対してメール通知を設定するサンプルスクリプトをご案内します。
アクションスクリプトの基本的な利用方法については、アクションスクリプト使い方ガイドをご確認ください。
ユースケース
例えば、外部委託先にメール通知をしたいとき、メールテンプレートの内容をカスタマイズしたい場合に、本スクリプトを利用します。
注意事項
SendGrid API Key
クレオにて発行するため、本スクリプトの利用をご要望の時はお問い合わせください。
ポストスクリプト実行結果の確認
ポストスクリプトはアクション実行後に処理が開始されるため、アクション実行直後の画面では結果がすぐに反映されないことがあります。
サンプルスクリプト
以下は、ステータスを分岐させるサンプルスクリプトです。
/**
* 任意のメールテンプレートをSmartStageを利用しないユーザーに対してメール通知を設定する
* * 【前提】
* SmartStage APIトークン は環境変数に設定されているものとします。
* SendGrid API Key は環境変数に設定されているものとします。
*/
// --- SmartStage関連の参照情報(メール本文で使用) ---
const SS_FIELD_ID_XXX = "<画面項目ID>";
// --- 宛先情報 ---
const rawToList = [
{ email: "" }, //送信先(to)メールアドレス1つ目
{ email: "" }, //送信先(to)メールアドレス2つ目
];
const rawCcList = [
{ email: "" }, //送信先(cc)メールアドレス1つ目
{ email: "" }, //送信先(cc)メールアドレス2つ目
];
// --- メールの内容設定 ---
const MAIL_SERVICE_API_END_POINT = "https://api.sendgrid.com/v3/mail/send";
const MAIL_FROM = "noreply@smart-stage.io"; //サブドメイン部分(noreply)は変更可
const MAIL_SUBJECT = "メールテスト"; //メール件名
//メール本文
const MAIL_CONTENT = `本メールは自動送信です。\n\nタスク タイトル: ${item.title}\nタスク 対応完了希望日: ${item.fields[XXX]}\n タスク itemId:${item.itemId}\n\n タスク URL:https://app.smart-stage.io/applications/<アプリケーションID>/processes/<データストアID>/tasks/${item.itemId}`;
// アドレスリストから無効なメールアドレス(空文字列)を除外するヘルパー関数
const filterValidEmails = (list) => {
return list.filter(recipient => recipient.email && recipient.email.trim() !== "");
};
/**
* メールを送信する
*/
const sendMail = async () => {
const toList = filterValidEmails(rawToList);
const ccList = filterValidEmails(rawCcList);
// TOもCCも宛先がない場合は、メール送信をスキップして終了
if (toList.length === 0 && ccList.length === 0) {
logger.info("TOおよびCCの有効な宛先がないため、メール送信をスキップしました。");
return;
}
// SendGrid APIリクエストボディ
const payload = {
personalizations: [
{
to: toList, // フィルタリングされたリストを使用
cc: ccList, // フィルタリングされたリストを使用
subject: MAIL_SUBJECT,
},
],
from: {
email: MAIL_FROM,
},
content: [
{
type: "text/plain",
value: MAIL_CONTENT,
},
],
};
// API認証オプション (SendGrid API Keyは環境変数から取得)
const mailOptions = {
headers: {
Authorization: `Bearer {MAIL_SERVICE_API_KEY}`,
"Content-Type": "application/json",
},
};
logger.log(mailOptions);
// メール送信
const response = await axios({
url: MAIL_SERVICE_API_END_POINT,
method : 'post',
data : payload,
...mailOptions,
}).catch((e)=>{
// エラーログ出力
logger.error("メール送信に失敗しました。", JSON.stringify(e.response.data.errors));
throw false;
});
};
/**
* メイン処理
*/
const main = async () => {
await sendMail();
logger.info("メールを送信しました。");
};
main();
何かお困りのことはございますか?まずはヘルプセンターを検索してみましょう!
その他ご不明な点があれば、サポートチームにお問い合わせください。
コメント
0件のコメント
サインインしてコメントを残してください。