質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
kintone

kintone(キントーン)とは、サイボウズ社が提供する業務改善プラットフォームです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

714閲覧

kintoneの更新日時フィールドをレコードが更新された場合のみ現在時刻を取得するようにしたい

takashijjjj

総合スコア0

kintone

kintone(キントーン)とは、サイボウズ社が提供する業務改善プラットフォームです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2023/05/08 06:51

kintoneにjsファイルを読み込ませることにより経過日数フィールドに現在日時から作成日を引いた値を代入させることに下記のコードで成功させました
しかし更新日時というフィールドが本来はレコードが更新された場合のみ現在時刻を取得しなければいけないものが、ページを更新するたびに現在時刻を取得するようになってしまいました。

更新日時に関する記述は下記のコードではconsole以外していないと思うのですが、なぜ更新日時がページを更新するたびに現在時刻を取得するようになってしまったのでしょうか。

レコードを更新したときのみ更新日時フィールドが現在時刻を取得できるようにしたいです

(() => { 'use strict' //1回だけリロードする /*if (window.name !== 'reload') { console.log('リロード'); location.reload(); window.name = 'reload'; } else { window.name = ''; }*/ //イベントリスナーの設定 kintone.events.on([ 'app.record.index.show', 'app.record.detail.show' ], async (event) => { var record = event.record; //現在日時の取得 const now = new Date(); const year = now.getFullYear(); const month = ('0' + (now.getMonth() + 1)).slice(-2); const date = ('0' + now.getDate()).slice(-2); const hour = ('0' + now.getHours()).slice(-2); const minute = ('0' + now.getMinutes()).slice(-2); const second = ('0' + now.getSeconds()).slice(-2); var nowTotal = `${year}-${month}-${date} ${hour}:${minute}:${second}`; console.log("現在時刻" + nowTotal); //index.showとdetail.showの使い分け if (event.type === 'app.record.detail.show') { //作成日時の取得 var createTime = new Date(record['作成日']['value']); console.log("作成日時" + createTime); //経過日数 const diff = now.getTime() - createTime.getTime(); const diffDays = Math.floor(diff / (1000 * 60 * 60 * 24)); const diffHours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); const diffMinutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)); var diffTotal = `${diffDays}日${diffHours}時間${diffMinutes}分`; console.log("経過日数" + diffTotal); //更新日時 console.log("更新日時" + event.record.更新日時.value); //値が最新だったら更新しない if (record.経過日数.value === diffTotal) { return event; } //レコード更新のパラメータ設定 const body = { app: kintone.app.getId(), id: kintone.app.record.getId(), record: { 経過日数: { value: diffTotal, } } } //フィールドの値を更新する return kintone.api( kintone.api.url("/k/v1/record.json", true), "PUT", body, ) } }) })();

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takashijjjj

2023/05/08 08:28

//フィールドの値を更新する return kintone.api( kintone.api.url("/k/v1/record.json", true), "PUT", body, (resp) => { console.log('フィールドの値を更新しました'); } ) これを書かないとコンソールでは更新日時はレコードが更新されたときの日時で経過日数は現在時刻から作成日時を引いた時間になっています しかしこのコードを記述すると更新日時がページを更新するたびに現在時刻を取得してしまいます ここを更新日時が更新されないようにしたらいいのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問