このページでは、アクション実行時に、特定の項目の値に応じてステータスを分岐させるサンプルスクリプトをご案内します。
アクションスクリプトの基本的な利用方法については、アクションスクリプト使い方ガイドをご確認ください。
完成イメージ
例えば、選択肢の値に応じて、遷移後のステータスを切り替えたい場合(緊急時には承認フローをスキップしたい場合など)に、本スクリプトを利用します。
【例】
「問合せ種別」という項目に「標準」と「緊急」の選択肢がある場合、以下のようにワークフローを分岐させることができます。
ワークフロー例:
新規 → 承認待ち → 対応中 → 対応済み → クローズ
- 「問合せ種別」が「標準」の場合: 『承認待ち』アクションを実行
- 「問合せ種別」が「緊急」の場合: 『対応中』アクションを実行(承認フローをスキップ)
利用API
- アイテム更新API (更新アクション実行)
-
URL:
https://api.smart-stage.io/items/{itemid}/actions/{actionid}/update -
method:
POST
SmartStage公開APIの仕様は以下のドキュメントをご確認ください。
https://api.smart-stage.io/swagger/index.html
注意事項
画面項目の追加
条件分岐に利用するトリガーや選択肢を格納する画面項目がない場合は、適切な項目の型を選択して新規作成してください。
ポストスクリプト実行結果の確認
ポストスクリプトはアクション実行後に処理が開始されるため、アクション実行直後の画面では結果がすぐに反映されないことがあります。その場合は、数秒待ってからブラウザをリロードしてください。(updateAPIの実行には5〜10秒程度かかる場合があります)
サンプルスクリプト
以下は、ステータスを分岐させるサンプルスクリプトです。
//変数宣言
const SS_API_BASE_URL = "https://api.smart-stage.io"; // SmartStage外部公開APIベースURL
const SS_WORKSPACE_ID = "<ワークスペースID>";
const SS_DATASTORE_ID = "<データストアID>";
const SS_FIELD_TITLE = "<項目ID>"; //タイトルに利用している項目ID(※必須入力)
// 条件分岐用
const SS_FIELD_CONDITIONS = "<項目ID>"; //条件分岐のトリガーとする選択系の項目ID
const SS_CASE_A = "<選択肢ID>"; //上記項目の選択肢ID
const SS_CASE_B = "<選択肢ID>"; //上記項目の選択肢ID
const SS_A_ACTION = "<アクションID>"; //ケースAの時のアクションID
const SS_B_ACTION = "<アクションID>";//ケースBの時のアクションID
//{SS_API_TOKEN}:トークン情報を共通定数化したもの
const options = {
headers: {
Authorization: `Bearer {SS_API_TOKEN}`,
'Content-Type': 'application/json',
},
"timeout": 20000
};
//条件分岐アクション
const callNextAction = async () => {
let actionId;
//条件判定
if (item.fields[SS_FIELD_CONDITIONS] == SS_CASE_A) {
actionId = SS_A_ACTION;
} else {
actionId = SS_B_ACTION;
}
const payload = {
"comment": "スクリプトによりステータス分岐",
"datastoreId": SS_DATASTORE_ID,
"workspaceId": SS_WORKSPACE_ID,
"fields": {
[SS_FIELD_TITLE]: item.title
}
};
const relItems = await axios({
method: 'post',
url: `${SS_API_BASE_URL}/items/${item.itemId}/actions/${actionId}/update`,
data: payload,
...options,
})
.catch((e) => {
logger.error(`SmartStageの登録に失敗しました。エラー情報: ${JSON.stringify(e)}`);
throw (e);
});
}
/**
* メイン処理
*/
const main = async () => {
try {
await callNextAction();
} catch (e) {
logger.error(`エラー情報: ${JSON.stringify(e)}`);
throw (e);
}
};
main();
何かお困りのことはございますか?まずはヘルプセンターを検索してみましょう!
その他ご不明な点があれば、サポートチームにお問い合わせください。
コメント
0件のコメント
サインインしてコメントを残してください。