現在、Tips にある『【Garoon JavaScript API】出張申請から内容を引き継いで旅費申請を作成する 』を参考に、承認済みの申請データから報告申請画面にデータを引き継ぐJavaScriptを作成しておりましたが、以下のメッセージが出て上手く動作しません。
画面上の項目は、『タイプ:日付、表示形式:日付と時刻』の項目であり、承認済みの日付時刻データを、報告フォーム上の日付時刻項目に値をセットするというJavaScriptで、以下の様に記述しました。
【申請画面側】
sessionStorage.setItem(‘kaishinitiji’, request.items.kaishinitiji.value);
【報告画面側】
request.items.kaishinitiji.value = sessionStorage.getItem(‘kaishinitiji’);
ちなみに先の参考Tipsにあるように、画面上の項目が『タイプ:日付、表示形式:日付のみ』の場合はうまく動作しておりましたが、『表示形式:日付と時刻』に変更すると前述のエラーが発生してしまいます。
初歩的な質問で申し訳ありませんが、アドバイス等よろしくお願いいたします。
Ryuji Sato さん
私もJavaScript初心者のため詳しいことはわからないのですが、
Garoonのワークフローで項目タイプを「日付」に、
表示形式を「日付と時刻」とした場合、
データはオブジェクトとして扱われるようです。
sessionStorageを利用するとデータは文字列に変換されてしまうので
旅費申請(報告書)側でワークフローの日付項目に値を設定する際、
文字列のデータが設定できずにエラーとなってしまうようでした。
手元の環境で試したところ、以下のようにsessionStorageに格納時に
JSON文字列に変換し、旅費申請(報告書)側でsessionStorageから
データを申請の項目に格納する際、オブジェクトに変換してやればうまくいきました。
【申請画面側】
sessionStorage.setItem(‘tripplan_kaishinitiji’, JSON.stringify(request.items.kaishinitiji.value));
【報告画面側】
request.items.kaishinitiji.value = JSON.parse(sessionStorage.getItem(‘tripplan_kaishinitiji’));
参考までに、、、
da さん
当方のスクリプトにアドバイス通り埋め込んでみたところ、動作いたしました。
JSON 文字列とオブジェクトは別物なんですね。とても勉強になりました。
すごく助かり大感謝です。ありがとうございました。