テーブル内にある日付のMax日付を取得したい

テーブル内にある日付フィールドのうち、Max日付を「直近訪問日」フィールドに表示したいです。

空欄の場合もありますので、空欄の場合は除外した中でMax日付、すべて空欄の場合は「直近訪問日フィールド」も空欄にしたいです。

教えてください!

テーブル内をfor文にしてループさせ、日付の値を比較してはどうでしょうか。

日付が空欄でなかったら、前日付と比較、今回のほうが値が大きければ変数latest_visitに代入といった感じです。 

 

(function () {
"use strict";

kintone.events.on(['app.record.edit.submit', 'app.record.create.submit'], function (event) {
var record = event.record;
var table_date = null;
var latest_visit = null;
var Table = record.Table.value

for (var i = 0; i < Table.length; i++) {
if (Table[i].value.日付.value != null) {
table_date = Table[i].value.日付.value;

if (latest_visit == null) {
latest_visit = table_date;
} else {
if (latest_visit < table_date) {
latest_visit = table_date;
}
}
}
}

record.直近訪問日.value = latest_visit;
return event;

})
})();

Aiko Yamamoto

ご回答ありがとうございます。

そのままアプリのjavascriptに適用してみましたが、直近訪問日に何も表示されませんでした・・・。

エラーも何も出ないのですが、どこかに問題ありそうでしょうか?

・編集保存の時に動くスクリプトですが、編集保存されましたか?

・各フィールドコードはあっていますか?

  1. テーブルのフィールドコードは「Table」ですか?
  2. テーブルの中の日付のフィールドコードは「日付」ですか?
  3. 直近訪問日のフィールドコードは「直近訪問日」ですか

この辺りが大丈夫なら動くと思うのですが、ご確認いただけますか?

Aiko Yamamoto

>・編集保存の時に動くスクリプトですが、編集保存されましたか?

はい、保存まで行いました。

>・各フィールドコードはあっていますか?

はい、3つともフィールドコードは修正してあります。
ちなみに、直近訪問日はTableの中の項目ではありません。(Table外に設けた日付型の項目)
それは問題ないでしょうか?

Aiko Yamamoto

Table[i].value.日付.valueが機能していないような気がしています。

2件ほどTableの日付を登録して
alert(Table[0].value.日付.value);
でアラート画面を出そうとすると、アラート画面が表示されません。

ちなみに、アラート中身を下記に変更すると表示されます。
alert(“hello”);

となると、問題はこの変数かと思いますが、いかがでしょうか?

foopii様

ご連絡遅くなりまして申し訳ありません。

ちなみに私の環境では上記JSで動くのですよ。このような感じなのですが、違うところ思い当たりますか?

あとはChromeの開発者ツールでデバッグして、うまく行かないところを調査するのはどうでしょうか。

Aiko Yamamoto様

ご連絡ありがとうございます。

chromeのディベロッパーツールでjsを開こうと思いましたが、何も選択できない状況です。

kintoneの設定画面では確かにjsは登録されておりますが、うまく動作しないことに何か関係はありますでしょうか?

foopi様

本当ですね、JSが出てこないですね。

 

レコードの編集中に、ディベロッパーツールを開いても出てこないのはおかしいですね。ということはJS自体が読み込めてないのかな。。

ちなみに、alert(“hello”)のスクリプトを書いたとの事でしたが、その時はJS見えるのでしょうか。

 

他に思いつく事と言えば、設定画面でJSを登録した後アプリの更新ボタンの押し忘れぐらいでしょうか。(私、時々やるミスなので)

他にもJSの読み込みでご苦労されている投稿もありました。

https://developer.cybozu.io/hc/ja/community/posts/360050796031-%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%AF%E3%81%9A%E3%81%AE-js%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC

このような事態に陥ったことが無く、内容のあるヘルプができず申し訳ありません。

Aiko Yamamoto様

何度もありがとうございます。

>ちなみに、alert(“hello”)のスクリプトを書いたとの事でしたが、その時はJS見えるのでしょうか。
こちらの時はjsは見えています。

こちらは、cybozuに問い合わせた方が良いですか?
いただいた投稿をみましても、最終的には「問い合わせ」をしているようでしたので。

アプリ設定画面の青いボタン(アプリを更新)の押し忘れは無いですか?
設定画面を開いてボタンが青くなっていたら、未更新の設定があるという意味です。

Shotaro Matsuda様

ご回答ありがとうございます。

はい、アプリの更新忘れはありまん。
(何回も試しているのでそれはないかと思います)

おかしいですね。

あとは、

  • JavaScript / CSSでカスタマイズ画面の、「適用範囲」が外れているか、
  • 文字コードがUTF-8(BOMなし)になっているか

ぐらいですかね。確認されましたでしょうか?

 

 

 

Shotaro Matsuda

ありがとうございます。

>文字コードがUTF-8(BOMなし)になっているか
文字コードがSJISになっていまして、修正したらできました!
※ただ、実行できた、alert(“hello”)のjsファイルもSJISでした…なぜ実行できたのか・・・

ひとまず期待通りの結果が得られました!
Aiko Yamamoto様、Shotaro Matsuda

ありがとうございました!

 

Shotaro Matsuda

素晴らしい・・・!

勉強になりました、どうもありがとうございました!!

やはり!笑
うまくいったようで何よりです。

特に試行錯誤する開発の時は、ファイルアップロードではなく、JSEditを使うのが、安心かつ間違いが少ないと思いますよ。

ちなみに、うまくいってたのは、たまたま文字コードによって影響を受けない文字だけだったのかもですね。

このJSをKREWSHEET上で、再現したい場合のコードはどのようになりますでしょうか。

御教授頂けますと幸いです。