Get、Setを使用しての値の更新が出来ない

// EXIFの座標情報を取得
  function getExif(imageData) {
      //var df = new $.Deferred();
      loadImage.parseMetaData(imageData, function(data) {
          // EXIFデータがない場合
          if (data.exif === undefined) {
              return df.resolve();
          }

          var gpsLatitude = data.exif.get('GPSLatitude');
          var gpsLatitudeRef = data.exif.get('GPSLatitudeRef');
          var gpsLongitude = data.exif.get('GPSLongitude');
          var gpsLongitudeRef = data.exif.get('GPSLongitudeRef');

          latitude = toPercentage(gpsLatitudeRef, gpsLatitude);
          longitude = toPercentage(gpsLongitudeRef, gpsLongitude);
          
          var record = kintone.app.record.get();
          
          record['record']['緯度']['value'] = latitude;
          record['record']['経度']['value'] = longitude;
          record['record']['緯度']['disabled'] = true;
          record['record']['経度']['disabled'] = true;

          kintone.app.record.set(record);
          
      });
      //eturn df.promise();
  }

上記のコードで、緯度・経度を取得したいと思い、代入を行っているのですが、反映されません。
上記で、誤りがあればご教示願います。

TS44さん、こんにちは~~

コードを拝見させていただきました。以下のいくつかの点が気になっていました。

まず、私が参考した記事は以下の二つになっています。
1) kintoneに登録された写真のEXIF情報から地図表示 ~ 最近彼女ができたから ~
2) OpenStreetMapで写真の位置情報を表示する

気になった点は以下の通りになっています。

① 事前のJS/CSS設定は行いましたでしょうか

どの参考記事を読んでも、JS/CSS設定は書かれているため、それの確認が重要だと思っています。
JS_CSS設定1
JS_CSS設定2

② 画像はどこで読み込まれるのか指定も必要だと思います。

2つの参考記事とも「function getFile(url) {}」を使用しています。

kintoneに添付されたファイルをダウンロードするコードです。

これを書き込んでいない場合、どの画像を読み込むのか、指定されていないことになるので、レコードに情報が書き込まれません。

③ Kintone JavaScript APIのイベントも使う必要があります

イベントは、緯度・経度をいつのタイミングで情報が反映させるのか、いつのタイミングで取得するのかを指定する役割を果たしています。

例えば: kintone.events.on(‘app.record.detail.show’, function(event) { });

こちらのイベントはレコード詳細画面を表示した後のタイミングを指定しています。

Kintone JavaScript APIはこちらに表示されています。

参考になりますと嬉しいです。

「いいね!」 2

JUNさん、ご回答ありがとうございます。
現状をご報告します。
① 事前のJS/CSS設定は行いましたでしょうか
→設定を行ってます。
② 画像はどこで読み込まれるのか指定も必要だと思います。
→画像の読み込み、指定は行っております。
③ Kintone JavaScript APIのイベントも使う必要があります。
→app.record.detail.showを使用しています。

ブラウザの検証画面上では、record[‘record’][‘緯度’][‘value’] 、record[‘record’][‘経度’][‘value’] に値が入っているようなのですが、実際保存すると空白になってしまいます。

「いいね!」 1

とのことですが、
レコードの値を取得する - cybozu developer network

冒頭

onclick や onchange などの JavaScript のイベントハンドラー内で実行できます。

制限事項に

kintone.events.on() のイベントハンドラー内では実行できません。
このイベントハンドラー内で、レコードのデータを取得するには、ハンドラーに渡される引数のイベントオブジェクトを使用してください。

の記載があります。

それが原因かもですー

「いいね!」 2

細谷崇
ご回答誠にありがとうございます。

下記の方法であれば、各フィールドに値の代入は可能でしょうか?

kintone.events.on('app.record.detail.show', function(event) {
            
      if(latitude === undefined){
      }else if(latitude === ''){
      }else{
        record['緯度'].value = latitude;
        record['経度'].value = longitude;
        
        window.alert(record['緯度'].value);
        window.alert(record['経度'].value);
        return event;
      }
      
  });

@TS44

上記プログラムは色々省略されて書かれているので、、、ちょっと回答がしづらいです。

例えば、latitude がいきなり登場してますが、、、書かれてるプログラムではlatitudeをセットしてるところがないし record[‘緯度’].value = latitude; を突っ込んでますが、 recordの変数がないので、セットできないだろうなーと思いますし。

「いいね!」 1

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