このページでは、「新規作成」アクション実行時に、項目「対応完了希望日」が未入力の場合に、自動で7日後の日時を登録するサンプルスクリプトをご案内します。
アクションスクリプトの基本的な利用方法については、アクションスクリプト使い方ガイドをご確認ください。
完成イメージ
例えば、「新しいデータを登録する(新規作成)」アクション実行後に、項目「対応完了希望日」が未入力の場合に、現在日時から7日後(168時間後)の日時を自動で登録します。
- 新規作成時に「対応完了希望日」を入力: 入力した日時がそのまま登録されます。
- 新規作成時に「対応完了希望日」を入力しない: 現在日時から7日後の日時を自動登録します。
利用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秒程度かかる場合があります)
サンプルスクリプト
以下は、「対応完了希望日」を現在日時から7日後に自動登録するサンプルスクリプトです。
/**
* 変数宣言
*/
const SS_API_BASE_URL = "https://api.smart-stage.io"; // SmartStage外部公開APIベースURL
//パラメータ変更
const SS_WORKSPACE_ID = "<ワークスペースID>"; // ワークスペースID
const SS_DATASTORE_ID = "<データストアID>"; //データストアID
const SS_UPDATE_ACTION_ID = "<アクションID>"; //「内容を更新する」アクションID
const IS_CREATE_PROCESS = 1; //新規作成時は1、更新作成時は0
const SS_FIELD_TITLE = "<項目ID>"; //タイトルに利用している項目ID
const SS_FIELD_UPDATE_TIME = "<項目ID>"; //対応完了希望日の項目ID
const options = {
headers: {
Authorization: `Bearer ${SS_API_TOKEN}`,
'Content-Type': 'application/json',
},
"timeout": 20000
};
// 日付文字列を7日後、かつISO 8601形式に変換
const convertToISO8601 = async (dateString) => {
const standardizedDateString = dateString.replace(/\//g, "-").replace(" ", "T");
// "YYYY/MM/DD HH:mm:ss"形式をパースしてDateオブジェクトを作成
const parsedDate = new Date(standardizedDateString);
// 現在の日付(月の日にち)に7日を加算する
parsedDate.setDate(parsedDate.getDate() + 7);
// 指定された時間を加算 (ミリ秒単位で計算)
parsedDate.setHours(parsedDate.getHours() + 9);
// DateオブジェクトをISO 8601形式の文字列に変換
return parsedDate.toISOString();
}
//更新API実行関数
const setToSmartStage = async (time) => {
if (time == "") {
logger.log("timeがありません");
return false;
}
const timeISO8061 = await convertToISO8601(time);
logger.log("7日後の日付:" + timeISO8061);
let payload = {
"comment": "スクリプトにより更新",
"datastoreId": SS_DATASTORE_ID,
"workspaceId": SS_WORKSPACE_ID,
"fields": {
[SS_FIELD_TITLE]: item.title,
[SS_FIELD_UPDATE_TIME]: timeISO8061,
}
};
const relItems = await axios({
method: 'post',
url: `${SS_API_BASE_URL}/items/${item.itemId}/actions/${SS_UPDATE_ACTION_ID}/update`,
data: payload,
...options,
})
.catch((e) => {
logger.error(`SmartStageの登録に失敗しました。エラー情報: ${JSON.stringify(e)}`);
throw (e);
});
logger.log(`relItems:`+ JSON.stringify(relItems));
logger.log(`update正常終了`);
}
/**
* メイン処理
*/
const main = async () => {
try {
let dataTime;
if(IS_CREATE_PROCESS == 1 ){
dataTime = item.createdAt;
}else{
dataTime = item.updatedAt;
}
const updateTime = item.fields[SS_FIELD_UPDATE_TIME];
if( updateTime == null || updateTime == "" ){
await setToSmartStage(dataTime);
}
} catch (e) {
logger.error(`エラー情報: ${JSON.stringify(e)}`);
throw (e);
}
};
main();
何かお困りのことはございますか?まずはヘルプセンターを検索してみましょう!
その他ご不明な点があれば、サポートチームにお問い合わせください。
コメント
0件のコメント
サインインしてコメントを残してください。