公式資料を参照して構成した手順です。本記事の操作・コードの実行は未確認です。小さな入力例で期待結果を確かめてから利用してください。
できあがるもの
日付出力には納期を表すISO形式の文字列ができます。元のB列の日付型は保持され、出力は現在ファイルのタイムゾーンに基づく暦日です。
始める前に
- ブラウザ版Googleスプレッドシートの編集権限と紐付きApps Script
- コピーした検証用ファイルで実行。Apps ScriptはV8ランタイムを利用
- 「納期」A列案件・B列日付、1000行以内、B列は日付型
- ファイルのタイムゾーンを日本に設定、出力先「日付出力」は未作成
入力例
納期!A1:B3は「案件,納期」「A,2026/10/01」「B,2026/12/31」。B列の表示形式を日付にします。
手順
- 検証用コピーの設定でタイムゾーンを確認します。日付のように見える文字列を混ぜず、対象はすべて日付型にします。時刻を持つ日時は日付へ切り落とす設計です。
- 次の完全なコードをスクリプトへ貼り付けて保存します。他の記事の同名関数があるプロジェクトには混ぜません。 /** @OnlyCurrentDoc */ function exportDates() { const ss=SpreadsheetApp.getActive(), s=ss.getSheetByName('納期'); if(!s || ss.getSheetByName('日付出力')) throw Error('シートを確認'); const n=s.getLastRow(), tz=ss.getSpreadsheetTimeZone(); if(n<2 || n>1000 || s.getLastColumn()!==2) throw Error('2列の表が必要'); const out=[['案件','納期文字列']]; for(const [id,d] of s.getRange(2,1,n-1,2).getValues()) { if(!(d instanceof Date) || isNaN(d.getTime())) throw Error('日付型で入力'); out.push(["'"+String(id),"'"+Utilities.formatDate(d,tz,'yyyy-MM-dd')]); } ss.insertSheet('日付出力').getRange(1,1,out.length,2).setValues(out); }
- exportDatesを手動実行して対象ファイルの権限を確認します。日付出力のB2:B3が2026-10-01と2026-12-31になり、元の納期と同じ日か確認してください。
- 外部システムへ渡す前に、出力の小さなサンプルをそのシステムのテスト環境へ取り込みます。文字列の日付を受け付ける仕様かを別に確認し、時刻やタイムゾーンが必要な項目へこの形式を使わないでください。
期待結果と照合する
日付出力には納期を表すISO形式の文字列ができます。元のB列の日付型は保持され、出力は現在ファイルのタイムゾーンに基づく暦日です。
まずこの入力例で確認し、件数や値が一致しているかを見ます。完了表示だけで判断せず、重複・空欄・対象外データも残っていないか確認してください。
うまくいかないとき
- ファイルのタイムゾーンが違うと意図した暦日とずれる場合があります。実行前後で設定と結果を確認します。
- yyyy-MM-ddは時刻やオフセットを含みません。瞬間を示すイベント日時の受け渡しには不足します。
止める・元に戻す
日付出力シートを削除します。外部システムへの送信はコードに含めていないため、納期原本や外部データは変更されません。
公式資料・対応範囲
参照日:2026-10-17。公式資料の一般的な機能説明と、本記事固有の入力例の実行検証は別です。実務での短縮時間や効果は未計測です。