Windows OS 用はいくつかあるのですが、macOS 用では使い勝手のよいものがさがせなかったので作ってしまいました。
関連情報
- Windows OS
- macOS
- 【MAC版】Googleフォトで一括ダウンロードした画像の日付を正しい日時に復元する方法、Google Photos Takeout Helperの使い方を解説します
- Googleフォトのデータを丸ごと Google Takeoutでエクスポートしたもので使える模様。アルバム1つだけは出来ず、EXIF情報のないデータ(イラストなどのPNGデータ含む)は date-unknown フォルダにはいって修正されませんでした。
はじめに
Googleフォトからダウンロードすると、ファイルの作成日付がそのダウンロードした日になってしまいます。EXIF情報が存在する場合には、その情報から修正することは可能です。カメラの位置情報を明示的にオフにしていないスマートフォンであれば、基本的には入っているはずです。
- exiftoolでファイルの変更日時を写真の撮影日にする方法 #exiftool - Qiita
上記については、下記でまとめています。フォルダも指定できるので便利です。
しかしながら、EXIF情報のない写真や、それ以外のデータもあるはずです。それらは exiftoolでデータをみると、下記の3つぐらいしかなくて、それらは Googleフォトからダウンロードした日になってしまいます。写真は「いつ」とったかの情報が非常に大事です。
- FileModifyDate
- FileAccessDate
- FileInodeChangeDate
Googleフォト上では日時順に並んでいるわけで、Google側は日時情報を保持しているはずなのです。こちらも含めて取得するためには、Google Takeout という Googleアカウントに入ったデータをバックアップ目的でエクスポートするという機能をつかうことで取得できます。
ただ気をつけないといけないことは、これでエクスポートした Googleフォトの画像データもまた、ファイルの日時情報はエクスポートした日になってしまうことです(画像データ+メタ情報(JSON)の2ファイルを取得)。ただし、各ファイルに 日時など Googleがどのように管理しているかのメタ情報ファイル(JSON)も合わせてエクスポートします。これを参考に exiftool で日時を直すことにします。
JSONファイルの一部をみると、photoTakenTimeが画像のオリジナル日時になります(赤文字)。こちらのタイムゾーンは UTC 表記のため、これを日本なら JST時間(+9時間)に変更する必要があります。
"title": "man-html2.gif",
"description": "",
"imageViews": "1",
"creationTime": {
"timestamp": "*****",
"formatted": "2025/08/28 1:51:56 UTC"
},
"photoTakenTime": {
"timestamp": "*****",
"formatted": "1997/05/15 7:31:18 UTC"
},
いまどきなら Gemini(生成AI)を使えば、苦労せずに作れるのでは!?とおもって作ってみました。ただ結構何度も修正が必要だったので、やはり生成されたシェルスクリプトを実行して、意図して動作しているのか、どこが間違っているのか理解してプロンプトにて修正依頼をださないといけないなぁと思ったのでした。ただ Usage など -h 部分の実装など自動でやってくれるのは便利ですねぇ。
googlephoto_date_update.sh をインストールする
*macOS Sequoia 15.6.1 で検証しました。
*すべてコマンドを使うため、Macintosh HD > ユーティリティ > ターミナルを起動して、それ上で操作してください。
* 以下、「青文字」が実行するコマンドです。コマンドは入力したあと Enter キーを押すことで実行できます。
より googlephoto_date_update.sh をダウンロードする。
ダウンロードフォルダにダウンロードしたとして
ターミナルアプリより、
cd $HOME/Downloads
chmod +x googlephoto_timestamp_update.sh
を実行して、ファイルに実行権限をつけてください。
そして、下記を実行してコマンドのヘルプが表示されることを確認してみてください。
./googlephoto_timestamp_update.sh -h
どこででも実行できるようにするためには、
下記を参考に PATHを設けておくと便利です。
- macOSでパスを通す方法
https://zenn.dev/oreilly_ota/articles/b8482ba9a4ca24
Google Photos のデータを Google Takeout でエクスポートしてみよう
1. https://takeout.google.com にアクセス
2. 「選択をすべて解除」をクリック
3. 「Google フォト」のみ選択
*特定アルバムのみエクスポートする場合には、「すべてのフォトアルバムが含まれます」をクリックして、必要なアルバムのみチェックをいれてください。
4. 次のステップへ
5. エクスポート先を選択
Googleドライブの容量が十分にある(Googleフォトの全容容量をさらに保存しても余裕)であれば、「Googleドライブへ追加」がもっとも速いです。ダウンロードリンクの場合には、結構時間がかかります。
ファイルサイズは、エクスポートする容量がどの程度かで考えてください。
エクスポートするデータが複数に分割されている場合には、それらの圧縮ファイルを展開して1つのフォルダに統合する必要があります。Windows OS では統合を選択できますが、macOS の場合には、Optionキーを押しながら、特定フォルダへドラッグ&ドロップさせることで統合ボタンがでてきます。
Macで「同じ名前のフォルダ」を結合する方法 | エンジニアの備忘録
特定アルバムをエクスポートした場合
ダウンロードした zipファイルを展開すると、下記のようなフォルダとファイル構造なります。
Takeout
Google フォト
アルバム名
写真1.jpg
写真1.json
メタデータ.json
この場合、ツールは
写真1.json
からタイムスタンプ(日時)情報を取得して
写真1.jpg
の画像データのタイムスタンプを修正します。
全データをエクスポートした場合
Takeout
Google フォト
Photos from 2010
Photos from 2011
Photos from 2012
Photos from 2013
.....
アルバムA
写真1.jpg
写真1.json
メタデータ.json
アルバムB
写真2.jpg
写真2.json
画像3.png
画像3.json
メタデータ.json
のような構成になります。
googlephoto_date_update.sh を使ってみよう!
ダウンロードフォルダに、Takeout というフォルダがあり、その中に Google Takeout でエクスポートした Googleフォトデータがあるとします。特定アルバムの場合には、下記のようになっていることでしょう。
Takeout
Google フォト
アルバム名
写真1.jpg
写真1.json
写真2.jpg
写真2.json
....
メタデータ.json
googlephoto_date_update.sh がダウンロードフォルダにあるとして
./googlephoto_date_update.sh Takeout
を実行してください。
それだけです。
もし日本ではなくシンガポールに住んでいて、Googleフォトもそのタイムゾーンをベースにアップロードしているならば、シンガポールは UTCの +8時間ですから、下記のように実行してください。
./googlephoto_date_update.sh --timezone +08:00 Takeout
2025年8月28日 @kimipooh
0 件のコメント:
コメントを投稿