0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Googleフォトの写真を別アカウントに移行する際の注意点と解決用スクリプト

Last updated at Posted at 2023-03-30

エンジニアの技術と直接関係のある記事ではないのですが、途中でPoiwershellを使ったりするので備忘録として残します。

今回の手順

おそらくいろいろやり方があるのでしょうが、今回は単純にバックアップリストアをする方法です。
今回のバックアップは以下の手順で行いました。

  1. 旧アカウントのGoogleフォトからデータをエクスポート
  2. エクスポートした画像があるフォルダを新アカウントのGoogleフォトに紐づけて同期させる

本題は注意点なので、手順の説明はしません。

注意点

どういうわけか、2. エクスポートした画像を新アカウントのGoogleフォトに紐づけて同期させるを行うと画像の日時がすべてエクスポートした日時になります。

解決方法

これでは不便なのでPowershellで解決します。

Adjust.ps1
function GPhoto-Adjust ([Switch]$HideDetails = $false) {
    # カレンとディレクトリのjsonファイルを再帰的に探索
    forEach($file in (Get-ChildItem -Recurse | Where-Object {$_.Extension -eq '.json'})){

        # jsonに対応する画像(動画)ファイルの有無を確認
        $picPath = $file.FullName.Substring(0, $file.FullName.Length - 5)
        if (-not (Test-Path $picPath -PathType Leaf)) {
            continue
        }

        # jsonに対応する画像(動画)ファイルを取得
        $pic = Get-Item $picPath

        # jsonをパース
        $json = Get-Content $file.FullName -Raw -Encoding UTF8 | ConvertFrom-Json
    
        # 画面に変更前の作成日時を出力
        if (-not $HideDetails) {
            Write-Host -NoNewline "$($pic.FullName)`t"
            Write-Host -NoNewline -ForegroundColor Yellow "$($pic.CreationTime)"
            Write-Host -NoNewline ' -> '
        }
    
        # 作成日時と更新日時をメタデータから変更する
        $pic.CreationTimeUtc = $json.creationTime.formatted.Replace(' UTC', '')
        $pic.LastWriteTimeUtc = $json.creationTime.formatted.Replace(' UTC', '')
    
        # 画面に変更後の作成日時を出力
        if (-not $HideDetails) {
            Write-Host -ForegroundColor Cyan "$($pic.CreationTime)"
        }
    }
}

使い方

  1. スクリプトを読み込みます。
  2. バックアップした画像ファイルがある親フォルダに移動します。
  3. GPhoto-Adjustコマンドレットを実行します。
. ./Adjustor.ps1
cd C:\Photo
GPhoto-Adjust

結果

実行すると作成日時や更新日時が撮影日時で上書きされます。

無題.png

この画像ファイルをGoogleフォトと同期すればしっかり日時を分けて表示できます。

公式が提供する機能だけで簡単に移行できるといいんですけどね・・・
有料契約してるユーザーだけでも機能を提供してほしいです。

リポジトリ

GitHubにソースコードと使い方をアップロードしました。
MITライセンスです。ご自由にご活用ください。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?