外部のAPIを利用して指定された地域の天気を表示する

外部のAPIを利用して、指定された地域の天気を自動で表示します。

サンプルについて
本サンプルのソースコードについてや、カスタマイズ方法等の技術的なお問合せは承っておりません。
本記事の内容は、記事公開日(2022年8月24日)当時の内容です。
利用するイベント・API

申請入力画面イベント(パーツ値変更イベント)

サンプルフォーム

他の地域の天気を表示する場合は、「補足」の「日本で取得できるwoeid」のセクションをご確認ください。
リストメニューパーツに項目名と値の追加、カスタマイズコードの修正が必要となります。

パーツID

パーツタイプ

項目名・値

補足

fidLocation

リストメニューパーツ

東京

名古屋

大阪

fidWeather

テキスト(一行)パーツ

タイプ:ノーマル


カスタマイズコード
カスタマイズコード
Copied!
(function () {
'use strict';
/**
* リストパーツから地域を選択した場合、選択した地域の天気を表示するイベント
*/
collaboflow.events.on('request.input.fidLocation.change', function (data) {

const parts = data.parts;
const location = parts['fidLocation'].value;

// リストメニューパーツの項目からwoeidを取得する
let locationWoeid;
switch (location) {
case '東京':
locationWoeid = '1118370';
break;
case '名古屋':
locationWoeid = '1117817';
break;
case '大阪':
locationWoeid = '15015370';
break;
}

const url = 'https://www.metaweather.com/api/location/' + locationWoeid;
const headers = {};
const parseType = 'json';

// 天気取得のリクエストを送信
collaboflow.proxy.get(url, headers, parseType).then(function (response) {

if (response.status !== 200) {
throw Error(response);
}

// weatherCodeを取得する
const weatherCode = response.body.consolidated_weather[0].weather_state_abbr;

// weatherCodeから天気を取得する
let weather;
switch (weatherCode) {
case 'sn':
weather = '雪';
break;
case 'sl':
weather = 'みぞれ';
break;
case 'h':
weather = 'あられ';
break;
case 't':
weather = '雷雨';
break;
case 'hr':
weather = '大雨';
break;
case 'lr':
weather = '小雨';
break;
case 's':
weather = 'にわか雨';
break;
case 'hc':
weather = 'くもり';
break;
case 'lc':
weather = 'くもりのち晴れ';
break;
case 'c':
weather = '晴れ';
break;
}
// 取得した天気をfidWeatherパーツに設定する
parts['fidWeather'].value = weather;

}).catch(function (error) {
// 失敗時の処理
console.error(error);

alert('天気の取得に失敗しました。');
return false;
});
});
})();

補足
天気取得APIについて

本サンプルの天気取得は、 MetaWeather を利用しています。
詳細については、MetaWeatherのサイトにてご確認ください。

日本で取得できるwoeid

天気を取得可能な日本の地域は以下の通りです。

地域

woeid

仙台

1118129

東京

1118370

横浜

1118550

川崎

1117502

埼玉

1116753

名古屋

1117817

京都

15015372

大阪

15015370

神戸

1117545

広島

1117227


動作の確認手順

1. サンプルのカスタマイズコードをjsファイルに保存します。
2. 保存したjsファイルを任意のエディターで表示します。
3. アプリ設定>フォーム設定から新規に通常フォームを作成します。
4. サンプルフォームに、先で記載されている必要項目を配置します。
5. サンプルフォームを再度表示し、カスタマイズのタブを表示します。
6. 保存したファイルをアップロードします。
7. アプリ設定>経路設定から新規に経路を作成します。
8. 新規文書から作成した経路名をクリックします。
9. 申請画面が表示されます。
10. リストメニューパーツから、天気を取得する地域を選択します。
11. 指定した地域の天気が一行パーツに表示されます。

動作イメージ