背景
以前は、以下のように文字列化する必要があったんですが、return については不要になってるみたいだったので調査記録
JSON.stringify(retreiveData)
結論
- 引数を渡さずに、取得するだけなら、JSON 取得は可能
- 引数については未対応どころか、Return に JSON 指定すると使えなくなります 😅
- 故に、引数を利用したい場合は、従来通り string で利用する必要あり
さて・・そのうちまた対応されることを期待して待つだけですかね。
2022/1/9 追記
object 型で JSON の受け渡しは出来るようになってるけれど、今回の記事同様に Return に object 指定すると引数が使えなくなりますね。
実装例
OfficeScripts
function main(
workbook: ExcelScript.Workbook
): JSON {
const retreiveData: JSON = <JSON><unknown>{
"response": "取得",
"value": "値"
};
return retreiveData;
}
こんな感じで、使いやすくなってますよね。
Automateでの取得結果
{
"result": {
"response": "取得",
"value": "値"
},
"logs": []
}
stringでの取得結果
{
"result": "{\"response\":\"取得\",\"value\":\"値\"}",
"logs": []
}
返り値の説明
Document によると、JSON の対応は特に明記されてるようには見えない
Argument/Return を各種型で試してみた結果
Argument type | return type | Automate での Argument 動的コンテンツでの表示 |
Automate での Return |
---|---|---|---|
Nothing | JSON | - | JSON 今回の記事 |
object | JSON | 表示されない | 動作エラー status 429 後に Retry で成功 |
object | Nothing | OK as object | - |
string | JSON | 表示されない | 動作エラー status 429 後に Retry で成功 |
string | string | OK as string | OK as string |
JSON | JSON | 表示されない | 動作エラー status 429 後に Retry で成功 |
JSON | Nothing | 表示されない | - |
status 429 ってことで、恐らくArgument がない為の無限ループかな・・。 | |||
ただ、何故か Retry 後には正常取得は可能。 | |||
とはいえ、5分ほど必要になるので、正直使えないと思った方がよさそう |
参考資料
keyword
retruning as JSON in office scripts is comming?