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に埋め込むことができます。


コメント