Google Apps ScriptでPDF保存時に時刻が16時間ずれる問題の解決方法

JavaScript

Google Apps Script(GAS)を使用してWebアプリケーションの画面をPDFとして保存する際、時刻が16時間ずれて表示される問題が発生することがあります。この問題は、JavaScriptで時刻をJSTに補正した際に発生することが多いです。今回はその原因と解決策を解説します。

1. JST補正の確認

まず、コード内での時刻補正部分を確認しましょう。次のコードはJSTに補正するために現在の時刻を取得し、9時間を加算してJSTの時刻を算出しています。

const jstTime = new Date(now.getTime() + (9 * 60 * 60 * 1000));

この補正が正しく動作している場合、16時間のズレが生じることはありませんが、問題が続く場合、他の部分に原因がある可能性も考えられます。

2. クローンHTML内でのJavaScriptの動作確認

問題が発生しているのは、PDF保存処理時に生成するクローンHTML内で時刻が正しく表示されていないためです。具体的には、Webページ内のJavaScriptがPDF保存時に生成したクローンHTMLで正しく動作していない場合があります。

この場合、JavaScriptコードがクローンHTML内で再実行されていないか、時刻表示の部分が適切に反映されていない可能性があります。クローンHTML内で時刻表示を行うためには、document.documentElement.cloneNode(true);を使用しても、クローン後に時刻を再設定する必要があります。

3. PDF保存処理での時刻設定方法

時刻をPDFに静的に埋め込む方法として、JST補正を加えた時刻を直接HTMLに挿入するコードを使用します。次のコードでは、JST時刻を取得し、#dateTimeというIDを持つ要素にその時刻を表示させています。

const dateTimeElement = clone.querySelector('#dateTime');
if (dateTimeElement) {
    dateTimeElement.innerText = jstString;
}

これにより、PDF保存時に正しい時刻が表示されるようになります。

4. その他の考慮点

もし問題が解決しない場合、以下の点も確認してみましょう。

  • PDF保存処理中にクローンHTMLの内容が動的に更新されるか確認する。
  • JavaScriptがPDF保存時に正しく実行されているか確認する。
  • 他のスクリプトが影響している可能性があるため、関連するコードも見直す。

まとめ

Google Apps ScriptでPDFを保存する際に発生する時刻のズレは、JSTの補正処理が正しく行われていないことが原因の一つです。また、クローンHTML内でのJavaScriptの動作が正しく行われていない場合もあります。上記の手順を試すことで、時刻のズレを解決し、正しい時刻をPDFに埋め込むことができます。

コメント

タイトルとURLをコピーしました