2020年9月12日土曜日

Googleフォトのデータを別のアカウントに移行する

Googleフォトのデータを他のアカウントに移行する

学校からもらったアカウントに写真を保存していて、卒業と同時にアカウントが削除されて青春の思い出が全て消えたという事にならない様に卒業前に普通の@gmail.comアカウントにデータを移行しておきましょう。

概要

Googleフォトで一つのアカウントとデータを共有する機能があり、「パートナーとの共有を設定する」に説明されています。この機能を使用してデータを移行します。移行には数日にかかることがある様です。
【注意】2024年秋頃に仕様変更されスマホの標準カメラアプリで撮影した画像以外は共有されなくなりました。ヘルプに記載されている以下のヒントがその内容です。
共有されない画像は一度ロックされたフォルダに入れて、出すと共有されるようになります。撮影日時が記録されていない画像をロックされたフォルダに入れて、出すとファイルタイムスタンプが変化してしまうので注意が必要です。

移行手順

  1. 移行元アカウントでログインして「共有パートナーとの写真の共有」の手順を行い、共有先に招待状を送付する
  2. 移行先アカウントでログインして「パートナーとの共有の招待状を承認する」の手順を行う。
  3. 移行先アカウントでログインして「共有パートナーの写真を保存する」の手順を行う。

基本はこれでおしまいですが、本当に移行できていることを確認する方法は以下です。

確認手順

  1. 移行先アカウントでログインして共有された画像のサムネイルに雲チェックマークがついていることを確認する。
  2. 移行元アカウントもしくは移行先アカウントでログインして「パートナーを削除する」の手順を行い、パートナー共有を解除する。
  3. 移行元アカウントでログインして重要でない写真を1枚ゴミ箱に入れてみる。いらない写真であればゴミ箱からも完全に消去してもよい。
  4. 移行先アカウントでログインして先ほどゴミ箱に入れた写真が「フォト」に表示されていることを確認する。
ここまでの説明で移行作業は完了です。特に迷わず作業できる人は以降を見る必要はありません。

詳細

スマホののGoogleフォトアプリでの詳細手順を説明する。(iPhoneとAndroidの画面が混在してます、ご注意下さい)

パートナー共有機能での移行手順

  1. 移行元アカウントでログインして「共有パートナーとの写真の共有」の手順を行い、共有先に招待状を送付する
    1. Googleフォトアプリの右上のアカウントアイコンが移行元アカウントであることを確認し、そのアカウントアイコンから「フォトの設定」>「共有」>「パートナーとの共有」に移動する
    2. 共有パートナーとの写真の共有を「共有パートナーを選択」し、共有パートナーとして移行先アカウントを指定する。
    3. 移行先アカウントが間違えていないことを確認し、共有する写真の条件を確認し「確認」をタップし招待状を送信する。

  2. 移行先アカウントでログインして「パートナーとの共有の招待状を承認する」の手順を行う。
    1. Googleフォトアプリの右上のアカウントアイコンが移行先アカウントであることを確認し、Googleフォトアプリ画面下の共有アイコンから共有画面を表示する。
    2. 共有画面から"パートナーさんから共有のリクエストが届いてます"「承諾」を選択し、リクエストを「承諾」する。共有返しする画面が出てきたら左上の「×」マークを押して「終了して破棄」を選択する。
  3. 移行先アカウントでログインして「共有パートナーの写真を保存する」の手順を行う。
    1. Googleフォトアプリの「共有」画面の一番上の「共有元さんの写真」をタップし、共有元の写真が表示されたら右上の「︙」メニューから「設定」を開き、アカウントへの保存を「すべての写真」に変更してもとに戻る。
    2. 共有メニューで設定が反映されていることを確認し、「フォト」に移行元アカウントの写真が表示されていることを確認する。

移行が完了していることの確認手順

  1. Googleフォトアプリ画面下の共有アイコンから共有画面に行き一番上の「移行元アカウントさんの写真」をタップしサムネイル画像右下の雲チェックマークがついていたらその画像は移行できてます。以前は雲マークがもう少しわかりやすかったのですが、ある時期から視認性が悪くなっていますので中止してみてください。雲マークがついていない画像は移行できていないのでしばらく待つか、手動で保存してください。
  2. 移行元アカウントもしくは移行先アカウントでログインして「パートナーを削除する」の手順を行い、パートナー共有を解除する。
    1. 共有メニューより「共有パートナーさんの写真」に移動し、右上の「・・・」メニューの「設定」に移動する
    2. 「パートナー共有の削除」を行い、共有パートナーが解除されたことを確認する。
  3. 移行元アカウントでログインして重要でない写真を1枚ゴミ箱に入れてみる。まずはゴミ箱に入れるだけで試す。

    もし本当になくなってもよい写真がある場合はゴミ箱からも削除してみる。

  4. 移行先アカウントでログインして先ほどゴミ箱に入れた写真が「フォト」に表示されていることを確認する。

注意事項

アーカイブにあるデータは移動出来ないので、アーカイブ解除するか、別の方法で移行する必要がある。当然ロックされたフォルダも移動できない。
アルバム構成は移行出来ないので、アルバムに関しては手動で移行する必要がある。
お気に入りマークも移動できない。
Googleフォト全般に言えることだが、いつの間にか動作が変わっていることがあったり、アカウントによって動作が異なることがあったり、一時的にサーバーが不調なことなどがある。
移行元アカウントを削除したり、移行元アカウントから写真を消すなどの目的の場合は、共有パートナーを解除した後に、移行先アカウントの「フォト」に写真が残っていることをしっかり確認したほうが良い。特に、写真だけでなく、動画などもよく確認し、最近の写真だけでなく、古い時期の写真も確認するとよい。

2020年7月26日日曜日

Google Driveで共有しているファイルやフォルダの一覧を表示する。

Googleドライブで共有しているものを探す方法を知りたい人がいたので、簡単にコードだけを張っておきます。(見てもらえそうなヒントだけ張っておきましたが、見てもらえるか、、、、)
といっても15,000程度のファイルを処理できるか検証途中です。

①GoogleのSpreadsheetでスクリプトエディタを開く
②以下のコードを張り付けて保存する
③メニューの「実行」>「関数を実行」>「start」を行う
④「ContinuationToken」というシートが追加され途中経過が保存される。
 6分間で処理しきれないので、処理を中断するためのトークンが保存されている
 A1セルおよびA2セルがFinishになったら処理終了
⑤結果は「SharedFolders」シートと「sharedFiles」シートに出力される。

  // メールに対する処理
function start()
{
  // ファイルとフォルダを並行して処理する
  // フォルダの処理は1分後にトリガ指定
  ScriptApp.newTrigger("CreateFolderList")
  .timeBased()
  .everyMinutes(5)
  .create();
  
  CreateFilesList();
  return;
}

function CreateFilesList() {
  
  // スクリプト実行開始時間を取得(6分制限用)
  var StartTime   = new Date();

  // トリガを削除する
  var triggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < triggers.length; i++) {
    if( triggers[i].getHandlerFunction() == arguments.callee.name )
    {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }

  // 出力シート
  var resultSheet = getSheet('SharedFiles');

  // ContinuationTokenを保存するセルを取得
  var ContinuationTokenRange = getSheet('ContinuationToken').getRange("A1");

  // ContinuationTokenを取得
  var ContinuationToken = ContinuationTokenRange.getValue();
  if( ContinuationToken == "" ){
    // ContinuationTokenが空の時は全ファイルを取得
    var targets = DriveApp.getFiles();
  }else if( ContinuationToken == "Finish" ){
    // 処理が終了している場合は実行しない。
    return;
  }else{
    // ContinuationTokenを取得できた場合はイテレータにセット
    var targets = DriveApp.continueFileIterator(ContinuationToken);
  }

  while( targets.hasNext() )
  {
    // 5分間実行したら処理を止めて、次のトリガーを設定する。
    var CurrentTime = new Date();
    if( (CurrentTime - StartTime) > 5*60*1000 ){
      var trigger = ScriptApp.newTrigger(arguments.callee.name)
      .timeBased()
      .everyMinutes(5)
      .create();
      ContinuationTokenRange.setValue(targets.getContinuationToken());
      return;
    }

    // 処理対象を取得
    var target = targets.next();
    
    // 共有モードを取得
    var access = target.getSharingAccess();
    
    if( DriveApp.Access.PRIVATE != access )
    {
      // 共有している場合は出力用のデータを取得
      var path = createPathString(target);
      var owner = target.getOwner().getEmail();
      var id = target.getId();
      resultSheet.getRange(resultSheet.getLastRow()+1,1,1,4).setValues([[path,owner,access,id]]);
    }
  }
  ContinuationTokenRange.setValue("Finish");
  return;
}

function CreateFolderList() {
  
  // スクリプト実行開始時間を取得(6分制限用)
  var StartTime   = new Date();

  // トリガを削除する
  var triggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < triggers.length; i++) {
    if( triggers[i].getHandlerFunction() == arguments.callee.name )
    {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }

  // 出力シート
  var resultSheet = getSheet('SharedFolders');

  // ContinuationTokenを保存するセルを取得
  var ContinuationTokenRange = getSheet('ContinuationToken').getRange("A2");

  // ContinuationTokenを取得
  var ContinuationToken = ContinuationTokenRange.getValue();
  if( ContinuationToken == "" ){
    // ContinuationTokenが空の時は全フォルダを取得
    var targets = DriveApp.getFolders();
  }else if( ContinuationToken == "Finish" ){
    // 処理が終了している場合は実行しない。
    return;
  }else{
    // ContinuationTokenを取得できた場合はイテレータにセット
    var targets = DriveApp.continueFolderIterator(ContinuationToken);
  }

  while( targets.hasNext() )
  {
    // 5分間実行したら処理を止めて、次のトリガーを設定する。
    var CurrentTime = new Date();
    if( (CurrentTime - StartTime) > 5*60*1000 ){
      var trigger = ScriptApp.newTrigger(arguments.callee.name)
      .timeBased()
      .everyMinutes(5)
      .create();
      ContinuationTokenRange.setValue(targets.getContinuationToken());
      return;
    }

    // 処理対象を取得
    var target = targets.next();
    
    // 共有モードを取得
    var access = target.getSharingAccess();
    
    if( DriveApp.Access.PRIVATE != access )
    {
      // 共有している場合は出力用のデータを取得
      var path = createPathString(target) + "/";
      var owner = target.getOwner().getEmail();
      var id = target.getId();
      resultSheet.getRange(resultSheet.getLastRow()+1,1,1,4).setValues([[path,owner,access,id]]);
    }
  }
  ContinuationTokenRange.setValue("Finish");
  return;
}

// targetファイル/フォルダの親フォルダをループしてパスを生成する
function createPathString(target)
{
  var path = target.getName();
  var cur = target;
  while( cur.getParents().hasNext() ){
    cur = cur.getParents().next();
    path = cur.getName() + "/" + path;
  }
  return path;
}

// 名前を指定してシートを取得、シートがないときは新規に作成する
function getSheet(sheetName)
{
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(sheetName);
  if( sheet === null )
  {
    sheet = ss.insertSheet(sheetName)
  }
  return sheet;
}

2020年7月12日日曜日

Googleフォトアプリのレイアウト変更

Googleフォトアプリで画像一覧のレイアウトを変更する方法は、簡単だけど気が付きにくい。二本指で画面をタッチしてそのまま指の間隔を広げる、もしくは縮めることでレイアウトを変更できる。

2020年7月4日土曜日

ブラウザでGoogleフォトにアップロード

Googleフォトアプリでうまくアップロード(バックアップ)できない時や、Googleフォトアプリでアカウントにログインしたくない場合にはブラウザでのアップロードを試してほしい

iPhoneの場合はSafariブラウザのプライベートタブでGoogleフォトWEB版(https://photos.google.com/login)にログインする。
Androidの場合はChromeブラウザのシークレットモードでGoogleフォトWEB版(https://photos.google.com/login)にログインする。
WEB版にアクセスできた場合には左上が「≡」アイコンになります。

画面左上が「≡」アイコンであることを確認したら画面右上に「⋮」横にある「+」アイコンから「写真を読み込む」を選択した後にアップロード元を選択する。

Androidであれば「メディアを選択」などを選び、iPhoneであれば「写真ライブラリ」などを選ぶとスマホ内の画像が表示されるのでアップロードしたい画像を選択する。


もし、上記でもうまくアップロードできない場合は一度その写真をグーグルドライブにアップロードしてからアップロード元として「Googleドライブ」を選び、Googleドライブからアップロードを試してみるとよい。
なお、通常のGMailアカウントだと「Googleドライブ」も選択できるが、GSuiteアカウントだとアップロード元として「電話」しか選択できないのでこの方法は使えない。

【追記】
HEICファイルの場合はブラウザが勝手にJPEGに変換されるため、以下のような現象が想像される。
・画像形式の変換に伴い画質が劣化する可能性がある。
・Googleフォトアプリでもバックアップしている場合にはJPEGファイルとHEICファイルが重複して登録される可能性がある。
パソコンでHEICを表示できない人は積極的に使っても良い。





Googleフォトの「思い出」機能が白っぽくなる

Googleフォトアプリに「思い出」機能があります。

この思い出のタイトルが白っぽく濁ることがある、ヘルプに記載されていない。

おそらく閲覧済みになると白っぽくなるようです。思い出の中の画像を半分程度を閲覧すると閲覧済みとして扱われるようです。

2020年7月2日木曜日

Googleフォトの共有機能

Googleフォトで公開中データ確認方法を中心に共有機能について説明します。
主にスマホ(iPhoneやAndroid)向けのGoogleフォトアプリで共有されている画像を確認する方法に主眼を置いて説明するので、共有方法の詳細や注意事項は公式のGoogleフォトヘルプを参照してください。

 1.共有している画像の確認方法
 2.パートナー共有
 3.スレッド共有


1.共有している画像の確認方法

Googleフォトアプリのメイン画面下の「共有」をタップすると共有メニューが表示されます。いろいろな共有方法がありますが、共有している内容はすべてここで確認できます。(以前は画面下に「共有」がありましたが、画面右上に移動したみたいです。)







2.パートナー共有

文言通りパートナーと写真を共有することに特化した機能。すべての写真を共有することができ。特定の人物が映っている写真を共有したり、指定日以降の写真を共有することができる。詳しくは「Google フォト ライブラリをパートナーと共有する」を参照してください。

2-1.パートナー共有の状況を確認する
共有メニューの一番上に表示されます。アカウントアイコンの横に「パートナー共有」や「XXXさんの写真」などと書かれているものがあればパートナー共有機能を使用しています。
■パートナーに自分のライブラリを共有するため招待状を送った状態

■パートナーからのライブラリ共有の招待状を受け取った状態

■共有パートナーとライブラリを共有した状況

2-2.共有パートナーの写真を見る
Google フォト ライブラリをパートナーと共有する」に詳しく書いてあるので説明は省略。

2-3.共有パートナーの写真を保存する
パートナー共有しただけだと、パートナーの写真を閲覧することができても自分のGoogleフォトには保存されていません。もしパートナー共有をやめたらそれ以降は写真を見ることができないです。また、共有元のパートナーが画像を削除すると、その写真は見ることができなくなります。
Google フォト ライブラリをパートナーと共有する」の「共有パートナーの写真を保存する」という手順に従いご自身のフォトライブラリに保存してください。

2-4.別の人とパートナー共有する
一人としかパートナー共有できません、別の人とパートナー共有したい場合には一度パートナー共有を停止してから、新たに別の人に共有の招待を行ってください。

2-5.パートナー共有を停止する
Google フォト ライブラリをパートナーと共有する」に詳しく書いてあるので説明は省略。

3.スレッド共有

スレッド共有という言葉はないので勝手にそのように呼んでます。Google アカウントを持っている人で、連絡先に登録されているか、メールアドレスや電話番号で検索できる場合に使える共有です。


4.共有アルバム


4-1.特定のユーザーとアルバムを共有する

作成したアルバムをメンバーを指定して共有することができ、メンバーを削除することもできる。
しかし、よくよく「共有アルバムで写真のプライバシーを管理する方法」を読んでみると注意事項として「共有アルバムからユーザーを削除しても、リンクの共有が有効になっている場合は、元のリンクを知っている全員がアルバムを閲覧できます。」と記載されている。
検証が必要だが、一度追加したメンバーだけを削除することは出来ないという事ではないか?そうであればユーザー削除などという操作を作る必要があるのだろうか?要検証!!!

4-2.共有リンク

アルバムにアクセスするための共有リンクを作成することができる。

5.リンクで共有

アルバムを作成せずに共有リンクを作成することができる。それについては「その他の共有リンク」を開くことで確認することができる。

2020年2月22日土曜日

Googleフォトの「保存容量の節約」(旧「高画質」)と「元の画質」の画像比較

Googleフォトの「保存容量の節約」(旧「高画質」)は画像が再圧縮されるので画像が劣化する。では実際にどの程度劣化するのか?この差が気になるのか気にならないのかは人によるので比較結果を参考にしてください。

1.使用画像

元の画質 保存容量の節約(旧「高画質」)

2.拡大比較

元の画質 高画質

3.超拡大比較

元の画質 保存容量の節約(旧「高画質」)
拡大場所

4.検証環境

撮影機材 iPhone 7 Plus iOS 13.3.1
使用PC Windows 10 Pro x64 (10.0.18362.0)
.NET Runtime 4.0.30319.42000
DPI 96 (1.00x scale)
paint.net V4.2.10 (Final 4.210.7348.40816)

2020年1月4日土曜日

Googleフォトの「空き容量を増やす」で特定の画像を端末に残す

概要

スマホでGoogleフォトを使用する目的の一つに、Googleフォトにバックアップした画像を端末から削除する「空き容量を増やす」機能がある。「空き容量を増やす」を実施するとGoogleフォト(ブラウザでhttps://photos.google.comにログインして使用するサービス)にバックアップ画像をスマホから削除できる。スマホの空き容量が足りなくなったときに非常に重宝する。

しかし、この機能はバックアップが完了したすべての画像を削除するので、端末に残しておきたい画像も削除してしまう。端末に画像がないと、Facebook、Twitter、インスタなどに画像を投稿する場合に不便。期間を指定して空き容量を増やすことができるとよいのだが、そういった機能がない。

「空き容量を増やす」を実行する際に、任意の画像を端末に残す方法を説明する。

1.iPhoneの場合
2.Androidの場合

iPhoneに関しては簡単に対応できるが、Androidの場合は少し面倒で機種により操作が違うかもしれない。

1.iPhoneの場合

iPhoneの場合にはiOS標準の写真アプリにある「非表示」機能を使用することで、Googleフォトが端末から写真を削除するのを防ぐ。これで説明としては十分な気がするが、念のため操作画面を張り付けておく。

1-1.写真アプリで該当データを非表示

残したいデータを選択し、共有メニューの中にある非表示を行う。


1-2.Googleフォトアプリで「空き容量を増やす」を実施

Googleフォトアプリの画面右上「アカウントアイコン」をタップし「フォトの設定」>「デバイスの空き容量の管理」と遷移し「空き容量を増やす」を実施する。



1-3.写真アプリで非表示にしたデータを再表示

写真アプリの「非表示」アルバムの中にある写真を「再表示」する。


2.Androidの場合

まだ十分を検証できていないので、今後更新予定。
おおむね以下の手順
2-1.Fileアプリなどのファイルマネージャーアプリを用いて、Google作業用のフォルダに画像を移動する。
2-2.Googleフォトアプリでそのフォルダの同期がオフになっていることを確認する。
2-3.その後「空き容量を増やす」を実施する。
2-4.作業用フォルダから元のフォルダに戻す。(戻さなくてもよい)