{"formatVersion":"1.0","tagData":{"name":"天気予報を取得","icon":"./res/x2/default_icon.png","description":"OpenWeatherMapから指定された場所の天気を取得して出力を切り替えます。","functions":[{"id":"function_0","name":"天気予報取得","connector":{"inputs":[{"label":""}],"outputs":[{"label":"エラー"},{"label":"晴れ"},{"label":"曇り"},{"label":"雨"},{"label":"雪"},{"label":"その他"}]},"properties":[{"name":"場所（英語指定）","referenceName":"location","type":"string","defaultValue":"Tokyo"},{"name":"API Key","referenceName":"apiKey","type":"string","defaultValue":"REPLACE YOUR API KEY"}],"extension":{"initialize":"// outputIndexを初期化します。\nreturn {\n\truntimeValues : {\n\t\toutputIndex : 0\n\t},\n\tresultType : \"continue\"\n};","receive":"","execute":"// PropertyのAPI Keyに、取得したAPI Keyを入力してください\nlog(\"API KEY: \" + properties.apiKey);\n\n//天気予報を取得するAPIです。\nvar apiURL = \"https://api.openweathermap.org/data/2.5/forecast\";\n\n//APIを呼び出すパラメータです。\nvar data = {\n\t\"q\" : properties.location,\n\t\"APPID\" : properties.apiKey\n};\n\n//非同期通信で呼び出します。\najax ({\n\turl : apiURL,\n\tdata : data,\n\ttype : \"get\",\n\ttimeout : 5000,\n\tsuccess : function ( contents ) {\n\t\t//コンテンツのチェック\n\t\tif ( !contents.list || !contents.list[ 0 ] || !contents.list[ 0 ].weather || !contents.list[ 0 ].weather[ 0 ] || !contents.list[ 0 ].weather[ 0 ].id ) {\n\t\t\tlog(\"Weather : Invalid data\");\n\t\t\truntimeValues.outputIndex = -1;\n\t\t\tcallbackSuccess( {\n\t\t\t\tresultType : \"continue\",\n\t\t\t\truntimeValues : runtimeValues\n\t\t\t} );\n\t\t}\n\n\t\tlog(JSON.stringify(contents));\n\n\t\t//天気を示すIDを取得します。\n\t\tvar idNum = contents.list[ 0 ].weather[ 0 ].id + 0;\n\t\tlog(\"Weather condition code = \" + idNum);\n\n\t\tif (idNum < 200) { // Undefined\n\t\t\truntimeValues.outputIndex = 0;\n\t\t} else if ( idNum < 300 ) { // Thunderstorm\n\t\t\truntimeValues.outputIndex = 3;\n\t\t} else if ( idNum < 500 ) { // Drizzle\n\t\t\truntimeValues.outputIndex = 3;\n\t\t} else if ( idNum < 600 ) { // Rain\n\t\t\truntimeValues.outputIndex = 3;\n\t\t} else if ( idNum < 700 ) { // Snow\n\t\t\truntimeValues.outputIndex = 4;\n\t\t} else if ( idNum < 800 ) { // Atmosohere\n\t\t\truntimeValues.outputIndex = 5;\n\t\t} else if ( idNum == 800 ) { // Clear\n\t\t\truntimeValues.outputIndex = 1;\n\t\t} else { // Clouds\n\t\t\truntimeValues.outputIndex = 2;\n\t\t}\n\n\t\tlog(runtimeValues.outputIndex);\n\t\t\n\t\tcallbackSuccess( {\n\t\t\tresultType : \"continue\",\n\t\t\truntimeValues : runtimeValues\n\t\t} );\n\t},\n\terror : function ( request, errorMessage ) {\n\t\tlog(JSON.stringify(request));\n\t\tlog(JSON.stringify(errorMessage));\n\t\truntimeValues.outputIndex = -1;\n\t\tcallbackSuccess( {\n\t\t\tresultType : \"continue\",\n\t\t\truntimeValues : runtimeValues\n\t\t} );\n\t}\n});\n \nreturn {\n\tresultType : \"pause\"\n};","result":"// outputIndexで指定された出力を返します。\nreturn {\n\tindexes : [ runtimeValues.outputIndex ],\n\tresultType : \"continue\"\n};"}}]}}