OpenWeatherMapから天気データ読み込み

以下のコードにて取得を試みていますが、上手くいきません。

是非ご指導いただきたく。

 

(function() {
    "use strict";
  
    // OpenWeatherMap APIの設定
    const apiKey = " **********"; // OpenWeatherMapのAPIキー
    const apiUrl = "https://api.openweathermap.org/data/2.5/forecast";
  
    // kintoneのフィールドコードの設定
    const postalCodeFieldCode = "郵便番号";
    const weatherForecastFieldCode = "天気";
  
    // kintoneレコードのフィールド変更イベントリスナー
    kintone.events.on("app.record.edit.change." + postalCodeFieldCode, function(event) {
      const record = event.record;
      const postalCode = record[postalCodeFieldCode].value;
  
      if (postalCode) {
        // OpenWeatherMap APIにリクエストを送信
        const requestUrl = `${apiUrl}?zip=${postalCode}&appid=${apiKey}&units=metric&cnt=5`;
        kintone.proxy(requestUrl, "GET", {}, {}, function(response) {
          const data = JSON.parse(response[0]);
          const weatherForecast = parseWeatherForecast(data);
  
          // 天気予報をkintoneのフィールドに表示
          record[weatherForecastFieldCode].value = weatherForecast;
        });
      }
  
      return event;
    });
  
    // OpenWeatherMap APIのレスポンスをパースして天気予報を取得
    function parseWeatherForecast(data) {
      const forecasts = data.list.map(function(forecast) {
        const dateTime = new Date(forecast.dt * 1000);
        const date = dateTime.toLocaleDateString("ja-JP", { weekday: "short" });
        const temperature = Math.round(forecast.main.temp);
        const description = forecast.weather[0].description;
        return `${date}: ${temperature}℃, ${description}`;
      });
  
      return forecasts.join("");
    }
  })();

試してはいませんが

          // 天気予報をkintoneのフィールドに表示
          record[weatherForecastFieldCode].value = weatherForecast;

ここが違うのは分かります。非同期処理の成功時コールバック関数内でレコードの値を書き換える場合、レコードの値を取得するレコードに値をセットするが必要です。

有難う御座います。試してみます。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。