ADVERTISEMENT

【Googleスプレッドシート】Apps Scriptで現在時刻のタイムゾーン変換!海外拠点向けの自動化

【Googleスプレッドシート】Apps Scriptで現在時刻のタイムゾーン変換!海外拠点向けの自動化
🛡️ 超解決

海外拠点とやり取りをする際、タイムゾーンの違いが原因で会議時間を間違えたり、報告書の提出期限を逃したりした経験はありませんか。手動で時差を計算するのは面倒で、ミスも起こりやすいものです。GoogleスプレッドシートのApps Scriptを活用すれば、現在時刻を任意のタイムゾーンに自動変換でき、海外拠点向けの業務を効率化できます。この記事では、Apps Scriptを使ったタイムゾーン変換の具体的な実装方法を、初心者にもわかりやすく解説します。

【要点】Apps Scriptでタイムゾーン変換を自動化する3ステップ

  • new Date() で現在時刻を取得: スクリプト内で現在の日時を取得し、UTC基準のDateオブジェクトとして扱います。
  • Utilities.formatDate() でタイムゾーン変換: 取得した日時を、第2引数で指定したタイムゾーンの文字列に変換します。
  • シートへの書き込みとトリガー設定: 変換結果をスプレッドシートに出力し、時間主導型トリガーで定期実行すると完全自動化できます。

ADVERTISEMENT

タイムゾーン変換の基本と自動化の必要性

タイムゾーンとは、地域ごとに定められた標準時のことで、日本はUTC+9の「日本標準時(JST)」を使用します。一方、海外拠点にはUTC+0のイギリス、UTC-5のアメリカ東部など、さまざまなタイムゾーンが存在します。スプレッドシート上で現在時刻を扱うとき、デフォルトではスプレッドシートのタイムゾーン設定(通常は日本時間)が適用されます。そのため、海外拠点の時間を表示するには変換が必要です。手動で時差を計算すると、夏時間の影響や計算ミスが生じるリスクがあります。Apps Scriptで自動化すれば、常に正確な時刻を取得でき、業務の信頼性が向上します。

Apps Scriptでタイムゾーン変換を実装する手順

スクリプトエディタを開く

  1. スプレッドシートを開く
    変換結果を表示したいスプレッドシートを開きます。
  2. 拡張機能メニューからApps Scriptを起動
    メニューの「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。

現在時刻を取得するコードを記述する

  1. 関数を作成する
    エディタに以下のコードを入力します。
    function getCurrentTime() { var now = new Date(); return now; }
  2. 動作確認をする
    関数名を選択し「実行」ボタンを押します。承認ダイアログが表示されたら許可してください。実行後、ログに現在時刻が表示されれば成功です。

タイムゾーンを変換するコードを追加する

  1. Utilities.formatDate() を使う
    以下のコードで、現在時刻を指定したタイムゾーンの文字列に変換します。
    function convertTimeZone() { var now = new Date(); var timeZone = 'America/New_York'; // 変換先のタイムゾーン var formatted = Utilities.formatDate(now, timeZone, 'yyyy/MM/dd HH:mm:ss'); Logger.log(formatted); }
  2. タイムゾーン名を指定する
    タイムゾーン名は「America/New_York」「Asia/Tokyo」「Europe/London」など、IANAタイムゾーンデータベースの名前を使います。夏時間は自動反映されます。

変換結果をスプレッドシートに出力する

  1. アクティブシートを取得する
    出力先のシートを指定します。
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  2. セルに値を書き込む
    変換した時刻をA1セルに書き込む例です。
    function writeConvertedTime() { var now = new Date(); var tz = 'America/New_York'; var formatted = Utilities.formatDate(now, tz, 'yyyy/MM/dd HH:mm:ss'); var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.getRange('A1').setValue('NY時間: ' + formatted); }

注意点とよくあるエラー

タイムゾーン名の指定ミス

タイムゾーン名は大文字小文字を区別し、スラッシュを含む正しい名前を使う必要があります。間違えるとエラーになります。正しい名前は「America/New_York」「Asia/Tokyo」です。省略形(EST、JSTなど)は使えません。IANAタイムゾーン一覧を参照してください。

日付フォーマットの指定方法

Utilities.formatDate() の第3引数はJavaのSimpleDateFormatパターンに従います。よく使うパターンは「yyyy/MM/dd HH:mm:ss」「yyyy-MM-dd’T’HH:mm:ss’Z’」などです。誤ったパターンを指定すると、意図しない文字列になるので注意が必要です。

トリガー設定で定期実行する

完全自動化には、時間主導型トリガーを設定します。スクリプトエディタの左側の「トリガー」アイコンをクリックし、「トリガーを追加」から「時間主導型」を選択して、実行間隔を指定します(例:1時間おき)。これで定期的に変換結果が更新されるようになります。

スクリプトの承認と権限

初回実行時には、スクリプトがスプレッドシートにアクセスするための承認が必要です。「このアプリは確認されていません」という画面が出ることがありますが、「詳細」をクリックして安全なページに進み、権限を付与してください。組織のポリシーによっては管理者の承認が必要な場合もあります。

ADVERTISEMENT

手動変換とApps Script自動化の比較

項目 手動変換 Apps Script自動化
正確さ 夏時間を忘れるなどミスが発生 夏時間も自動計算され、毎回正確
手間 毎回手動で計算して入力 一度設定すれば自動更新
応用性 複数拠点の管理が困難 リストから拠点を取得して一括変換も可能

まとめ

Apps Scriptを使えば、現在時刻を任意のタイムゾーンに変換してスプレッドシートに自動出力できます。この記事で紹介したUtilities.formatDate() とトリガー設定を組み合わせると、海外拠点向けの時刻表示を完全に自動化できます。応用として、複数の拠点のタイムゾーンをシートに一覧で持たせ、ループ処理で一括変換する機能も実装できます。ぜひ自社の業務フローに取り入れて、タイムゾーン管理の負担を減らしてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。