【スプレッドシート】CSVの壊れた日付を強制統一!DATEVALUE関数で直せない8桁・文字列を日付形式にする方法

Googleスプレッドシートのバラバラな日付形式をGASで一括修正する解説サムネイル

ダウンロードしたCSVデータを使って今月の集計をしよう!

そう意気込んでGoogleスプレッドシートにインポートした瞬間、画面を見て絶望したことはありませんか?

日付が入っているはずの列を見てみると、そこにあるのはただの8桁の数字や、謎の文字列

  • 20231201 (ただの数値。日付として認識されない)
  • '2023-12-01 (先頭に「’」がついた文字列。表示形式を変えても直らない)
  • 2023.12.01 (ドット区切り。スプレッドシートが日付と認めてくれない)

見た目は日付に見えても、スプレッドシート上では日付データとして認識されていないため、フィルタで正しく並ばず、月別集計も関数計算もできないといった悲劇が起こります。

そんな時に役に立つのが、DATEVALUE関数です。

しかし、DATEVALUE関数は、「20251225」のような8桁の数値は日付として認識できず、エラーになってしまうという弱点があります。

MASA

「LEFT関数」「MID関数」「DATE関数」を組み合わせると解決しますが、数式が複雑になって管理しづらくなりますよね…

そんな不毛な手作業は、もう終わりにしましょう!

今回は、どんな形式の日付であっても、GAS(Google Apps Script)を使って、ワンクリックで「正しい日付データ(yyyy/MM/dd)」に変換するツールの作り方をご紹介します。

GAS(Google Apps Script)は、Googleが提供するプログラミングツールです。

しかしプログラミングといっても、難しいプログラミング知識は不要です。

用意したコードをコピペして保存するだけでOKです。

↓↓実際の動画↓↓

今日からは、今ある絶望的な日付データを、一瞬で、実務で活用できる資産に変える方法を解説します。

目次

コピペで完了!日付修正ツールの作り方

ここからは実際にGAS(Google Apps Script)を使った、日付修正ツールの作り方について解説していきます。

MASA

GASの立ち上げ方法は省略してます。
立ち上げ方法から知りたい方は、以下の記事をご参照ください。

コードをコピーして貼り付け

JavaScript
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('便利ツール')
    .addItem('日付列を修正する', 'fixDateColumn') 
    .addToUi();
}

function fixDateColumn() {
  // ▼▼▼ 設定エリア ▼▼▼
  const TARGET_COLUMN = 1; // 修正したい列番号(A列なら1, B列なら2, C列なら3...)
  const START_ROW = 2;     // データが始まる行(1行目が項目の場合、2にする)
  // ▲▲▲▲▲▲▲▲▲▲▲▲▲
  
  const sheet = SpreadsheetApp.getActiveSheet();
  const lastRow = sheet.getLastRow();

  if (lastRow < START_ROW) {
    SpreadsheetApp.getUi().alert('データが見つかりません。');
    return;
  }

  const range = sheet.getRange(START_ROW, TARGET_COLUMN, lastRow - START_ROW + 1, 1);
  const values = range.getValues();
  
  const fixedValues = values.map(row => {
    const cell = row[0]; 

    if (!cell) return [cell];

    const strCell = String(cell).trim();

    if (strCell.match(/^\d{8}$/)) {
      const year = strCell.substring(0, 4);
      const month = strCell.substring(4, 6);
      const day = strCell.substring(6, 8);
      return [new Date(year, month - 1, day)];
    }

    if (strCell.match(/[\.\-]/)) {
      const standardized = strCell.replace(/[\.\-]/g, '/');
      const dateObj = new Date(standardized);
      if (!isNaN(dateObj.getTime())) {
        return [dateObj];
      }
    }

    if (cell instanceof Date) {
      return [cell];
    }

    return [cell];
  });

  range.setValues(fixedValues);
  
  range.setNumberFormat('yyyy/MM/dd');

}
JavaScript

自分のシートに合わせてカスタマイズ

どの列の日付を修正したいですか?

コードの以下の部分を見てください。

JavaScript
const TARGET_COLUMN = 1; // 修正したい列番号(A列なら1, B列なら2, C列なら3...)
JavaScript

ここでは「何列目を変換するか」を数字で指定します。

A列、B列などのアルファベットではなく、左から数えて何番目か(1, 2, 3…)を入力してください。

A列を直したい場合

1

B列を直したい場合

2

F列を直したい場合

6

MASA

例えば、「G列の表記ゆれを直したい!」という場合は、ここを7に書き換えるだけでOKです!

何行目からスタートしますか?

次に、その下の行を見てください。

JavaScript
  const START_ROW = 2;   // データが始まる行(1行目が項目の場合、2にする)
JavaScript

ここでは「何行目から変換を始めるか」を指定します。

基本的に 2 のままでOK です。

なぜなら、多くのスプレッドシートの1行目は「氏名」「住所」といったヘッダー行が入っていることが多いからです。

MASA

2は、ヘッダー行を無視した2行目から始めるって意味ですね!

保存して実行

自分の環境に合わせた変更が出来たら、以下のステップを踏むだけでOKです。

STEP
「Command + S」or「Ctrl+ S」で保存
STEP
「fixDateColumn」を選択
STEP
「実行」ボタンをクリック
STEP
権限の承認を突破
  • 「権限を確認」をクリック
  • アカウントを選択
  • 左下の「詳細」をクリック
  • 一番下の「無題のプロジェクト(安全ではないページ)に移動」をクリック
  • 「許可」をクリック
MASA

この一連の流れが分からない方向けに、こちらの記事で画像付きで解説してます!

スクリプトの実行と権限の突破方法

GASを実行したスプレッドシートに戻ってみてください。

バラバラだった日付データが、すべてきれいな「yyyy/MM/dd」形式に統一されているのが分かると思います

最後に、ブラウザの「更新ボタン」を一度押してみてください。

画面が再読み込みされると、メニューバーに「便利ツール」という項目が追加されます。

MASA

今後は、ここをクリックするだけで、いつでも実行できるようになります!

【もっと便利に】日付以外の手作業も自動化しませんか?

今回のツールを使えば、システムごとに形式がバラバラな日付データも、一瞬できれいに整います。

しかし、日付が直って終わりではありません。

整ったデータを使って、その次に行う業務こそ、自動化すべきポイントがあるのではないでしょうか?

実は、今回紹介したGAS(Google Apps Script)を使えば、日付修正のさらに先にある、こんな面倒なルーチンワークも全て自動化できます。

外部データの自動取り込み・結合と、期日に基づいたチャット通知

Gmailに届くCSVやGoogleドライブ内のファイルを自動で収集し、1つのシートに集約します。

さらに期日が迫った案件があれば、SlackやChatworkに自動でメンション通知を飛ばせるので、確認漏れがゼロになります。

日付を起点に、メール送信やカレンダー登録の自動化

顧客リストの日付を毎日自動チェックし、必要なタイミングでメールを下書き、または送信をしたり、Googleカレンダーに予定を登録したりします。

うっかり連絡し忘れたというヒューマンエラーを無くす事ができます。

集計・分析から、グラフ作成や報告書の出力までを一括処理

データの整形から、ピボットテーブルでの集計、グラフの生成までをボタン一つで実行出来る仕組みを構築。

そのままPDF化して指定のフォルダに保存したり、上司へメール報告したりといった月末のルーチンワークが一瞬で片付きます。

複雑な自動化を見よう見まねでするリスク

ここまで、GASによる業務効率化の可能性をお伝えしました。

これなら、ネットでコードを調べて自分でも作れるかも?

と思われた方もいるかもしれません。

確かに、今回ご紹介した日付を直すだけのツールであれば、失敗してもやり直しが効きますしダメージも大きくありません。

しかし、先ほど挙げたような「外部連携」や「メール送信」を含む自動化を、見よう見まねで作るのは非常に危険です。

もし、コードの書き方を一つ間違えると、以下のような取り返しのつかない事故が起こる可能性があります。

誤送信のリスク(信用問題)

テストのつもりが、顧客リスト全員に誤ったメールを一斉送信してしまった…。

これはGAS初心者が最もやりがちなミスであり、会社の信用を一瞬で失いかねません。

データ消失のリスク(復旧不可能)

処理のやり方を間違えて、大切なデータを丸ごと削除・上書きしてしまった…。

プログラムによる変更は、元に戻すボタンが効かないため、一瞬で全てを失います。

動かないリスク(業務停止)

ネットのコードを見よう見まねで作ったツールは、少しデータが変わっただけでエラーになりがちです。

「作った本人しか直せない」「急に動かなくなって業務が止まった」という事態は、現場を混乱させます。

ビジネスの根幹に関わるツールこそ、プロにお任せください

業務を楽にするはずの自動化で、業務フローを破壊してしまっては本末転倒です。

だからこそ、ミスの許されない実務レベルの自動化は、開発のプロにお任せください。

私は、単に動くコードを書くだけではありません。

安全設計

誤送信防止のロック機能や、データのバックアップ機能を実装。

エラー対応

万が一の不具合にも対応できる、堅牢なコード設計。

保守性

誰が見ても分かりやすく、長く使い続けられるツール作成。

「リスクを負わずに、確実に業務を効率化したい」

そうお考えの方は、ぜひ一度お問い合わせください。

MASA

あなたの業務フローをヒアリングし、あなただけの専用自動化ツールをご提案します!

まとめ

いかがでしたか?

今回ご紹介したツールを使えば、毎月数十分、あるいは数時間かかっていた日付直しの時間が、わずか数秒で終わるようになります。

プログラミングなんて自分には無理

そう思っていた方も、コピペだけでここまで便利な機能が作れることを実感いただけたのではないでしょうか。

しかし、日付を直すことはゴールではありません。

その整ったデータを使って、どうビジネスを動かすかが本番です。

  • 面倒な単純作業はツールに任せる
  • リスクのある手作業はゼロにする
  • 空いた時間で、売上を作る仕事に集中する

そのための第一歩として、まずは今回の日付修正ツールを使い倒してみてください。

そして、もし「ここから先の自動化も進めたいけれど、自分一人では不安だ」と感じた時は、いつでもお気軽にご相談ください。

MASA

あなたの業務がもっと快適になるよう、技術の面から全力でサポートさせていただきます!

  • URLをコピーしました!

MASAのアバター MASA MASA|GAS開発者

GAS開発者のMASAです。
スプレッドシート業務の自動化や効率化の仕組みづくりを提供しています。
ブログではの自動化や効率化のTipsについて発信しています。

目次