@retorol_jnh_352

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Gmailの受信日時とGASでスプレッドシートに転記された受信日時がずれてしまいます

Gmailで受信したメールについてGASを使って
スプレッドシートへの情報転記をしようとしています。

実際に実行してみると、
Gmailで表示されている受信日時とスプレッドシートに転記された受信日時で
1分誤差が出てしまうことがあります。
実際に使っているコードを一部記載させていただきます。
何か受信日時のズレの要因や修正点ありますでしょうか。
よろしくお願いいたします




const messageDate = message.getDate();



const messageHour = messageDate.getHours();
const hourComponent = (messageHour + 24 - 1) % 12 + 1;
const amPm = messageHour < 12 ? '午前' : '午後';
const formattedDate = Utilities.formatDate(messageDate, 'JST', yyyy/MM/dd ${amPm} ${hourComponent}:mm);

const LastRow = Sheet.getLastRow() + 1;
Sheet.getRange(LastRow, 1).setValue(formattedDate);



0 likes

1Answer

おそらくですが、分未満(秒、ミリ秒)の値が影響していると思われます。
秒まで表示すればズレないのでは?(12時間表示もformatDateにさせています)

- const messageHour = messageDate.getHours();
- const hourComponent = (messageHour + 24 - 1) % 12 + 1;
- const amPm = messageHour < 12 ? '午前' : '午後';
- const formattedDate = Utilities.formatDate(messageDate, 'JST', yyyy/MM/dd ${amPm} ${hourComponent}:mm);
+ const formattedDate = Utilities.formatDate(messageDate, 'JST', "yyyy/MM/dd a hh:mm:ss"); 
2Like

Comments

  1. 回答ありがとうございます!
    秒単位までGASを引っ張ってきてGmailのメールの中の秒数を確認しにいくイメージでしょうか?
    (メール一覧の部分には秒単位で表示させられないですよね。。)

  2. 秒単位までGASを引っ張ってきてGmailのメールの中の秒数を確認しにいくイメージでしょうか

    そうではなく、スプレッドシートに時分秒を表示した時の時分を見て、Gmailと1分のズレがあるか ないか を見てください。
    もしズレが無いなら、文字列に変換した受信日時の後ろ3文字を切れば、ズレが無い時分が得られます。
    もしズレがあるなら、分未満の値が影響しているという仮説の外れを意味します。

  3. 理解しました。細かくご教示いただきありがとうございました!

Your answer might help someone💌