海外拠点とやり取りをする際、タイムゾーンの違いが原因で会議時間を間違えたり、報告書の提出期限を逃したりした経験はありませんか。手動で時差を計算するのは面倒で、ミスも起こりやすいものです。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でタイムゾーン変換を実装する手順
スクリプトエディタを開く
- スプレッドシートを開く
変換結果を表示したいスプレッドシートを開きます。 - 拡張機能メニューからApps Scriptを起動
メニューの「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。
現在時刻を取得するコードを記述する
- 関数を作成する
エディタに以下のコードを入力します。function getCurrentTime() { var now = new Date(); return now; } - 動作確認をする
関数名を選択し「実行」ボタンを押します。承認ダイアログが表示されたら許可してください。実行後、ログに現在時刻が表示されれば成功です。
タイムゾーンを変換するコードを追加する
- 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); } - タイムゾーン名を指定する
タイムゾーン名は「America/New_York」「Asia/Tokyo」「Europe/London」など、IANAタイムゾーンデータベースの名前を使います。夏時間は自動反映されます。
変換結果をスプレッドシートに出力する
- アクティブシートを取得する
出力先のシートを指定します。var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); - セルに値を書き込む
変換した時刻を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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
