2022年1月25日火曜日

Googleフォトのデータを削除して容量を空ける

以下に該当する画像は容量を消費してないので削除しても空き容量は増えません。

 ①2021/5/31までに高画質設定でバックアップした画像 
 ②2021/5/31までに容量を解放を実施した場合は、実施前にバックアップした画像 
③2022/1/31までにpixel3からバックアップした画像 
④pixel5までのpixelシリーズのGoogleフォトアプリで節約画質(旧 高画質)設定でバックアップした画像 
⑤パートナー共有された画像を自分のライブラリに保存した画像(これが容量カウントされないのはバグだと思います、ある日突然容量消費する可能性が有ります) 

上記に該当しない画像を消すと空き容量が増えます。上記に該当する写真を消すと空き容量が増えてしまうこともあります。

なお、削除に関しては https://blog.hikozaru.com/2019/11/GooglePhotosDelete.html の2-1や2-2を参照下さい

2022年1月16日日曜日

JavaScriptのforEachが良く分からないという質問に対する回答

for( var i=0; i<array.length; i++){console.log(array[i];}は理解しているけど、
array.forEach(element => {console.log(element);});はよくわからないという方向けの説明です。
forEach の書き方は検索すれば大量にヒットするのですが、それでもこの書式の意味が良く分からないという方は一定数いるのではないでしょうか。ヤフー知恵袋でまさにその質問があったので回答してみたのでその紹介です。
質問内容としては以下です。
forEachメソッドについて
const numbers=[1,2,3];
numbers.forEach((number) =>{console.log(number);});
ここの引数の使い方がいまいち理解できません。
numberが定義されていないのになぜこれでちゃんと出力されるのですか?
私が初めてこの書き方を見たときと同じ疑問です。
forEachの構文や正確な情報は MDN Web DocsのArray.prototype.forEach()の説明 などを見ていただければよいかと思います。
今回は for を forEach に書き換えていくことで構文を覚えるのではなく、理解するということを目指していく。

①forを用いた記述

これが分からない人は、ごめんなさいこれ以上読み進めても意味がないです。
function test()
{
  var array=[1,2,3,4,5];
  for( var i=0; i < array.length; i++ )
  {
    console.log( array[i] );
  }
}

②forの処理を関数化

function hogehoge( number )
{
  console.log( number );
}

function test()
{
  var array=[1,2,3,4,5];
  for( var i=0; i < array.length; i++ )
  {
    hogehoge( array[i] );
  }
}

③コールバック関数風に書き換え

あまり利点はないですが説明のための変形です。
function hogehoge( number )
{
  console.log( number );
}

function test()
{
  var array=[1,2,3,4,5];
  var callbackFunction = hogehoge;
  for( var i=0; i < array.length; i++ )
  {
    callbackFunction( array[i] );
  }
}

④for文自体を関数化

forEach風の関数を作成します。
function hogehoge( number )
{
  console.log( number );
}

function forEachFunction( array, callbackFunction )
{
  for( var i=0; i<array.length; i++)
  {
    callbackFunction( array[i] );
  }
}

function test()
{
  var numbers=[1,2,3,4,5];
  forEachFunction( numbers, hogehoge );
}

⑤forEachに書き換える

forEach風の関数をforEachに書き換えます。
function hogehoge( number )
{
  console.log( number );
}

function test()
{
  var numbers=[1,2,3,4,5];
  numbers.forEach( hogehoge );
}

⑥forEachの中で関数を定義する

forEachのたびに別関数を作ると読みにくくなるので、関数定義しつつコールバック関数登録します。
function test()
{
  var numbers=[1,2,3,4,5];
  numbers.forEach(
    function hogehoge(number){console.log(number);}
  );
}

⑦アロー関数で定義する

関数定義をアロー関数に書き換えます。
function test()
{
  var numbers=[1,2,3,4,5];
  numbers.forEach(
    number=>{console.log(number);}
  );
}

●アロー関数は以下を見てください。

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions

2022年1月15日土曜日

Googleフォトに写真が見当たらない場合

写真が見当たらない場合や、機種変更時にGoogleフォトにバックアップした(つもり)のに新端末のGoogleフォトアプリに写真が表示されない時の対処をまとめた。



考えられる原因は2つです。

  • バックアップできていなかった 
    • Googleフォトアプリに表示されていてもバックアップできているとは限りません。そこを勘違いする人が多いです。
    • Googleフォトをインストールしてもバックアップには時間がかかります、1日15GBまでしかバックアップできないので100GBとか保存している場合には1週間くらいかかります。「携帯ショップで作業してくれた」という状況の場合はバックアップできてない可能性が高いです。
  • アカウントが違う
どちらにしても以下の手順で確認してください。

1.アカウントを確認する

 Googleフォトはアカウント毎にデータを保管しています。アカウントが異なると画像は閲覧できません。アカウントを一つしかもっていないと思っていても意図せず複数のアカウントを所有している人も多いので以下の確認をしてください。

所有しているアカウントすべてを確認:

旧端末が手元にある場合:

旧端末が手元にある場合は念のため、旧端末のGoogleフォトアプリで右上のアカウントアイコンから「フォトの設定」→「バックアップと同期」と進みバックアップ先のアカウントを確認してください。

2.WEB版のGoogleフォトでデータを確認する

Androidの場合:

Chromeブラウザのシークレットモードで https://photos.google.com/login にログインして画像を確認してください。
左上の「≡」アイコンから、「フォト」「アーカイブ」「ゴミ箱」「設定➜サポートされていない動画」の四か所を確認してください。
複数のアカウントを所有している場合には、すべてのアカウントでログインしてください。別のアカウントでログインする場合には一旦タブを閉じて新しいタブで同様にログインしなおしてください。

iPhoneの場合:

Safariブラウザのプライベートタブで https://photos.google.com/login にログインして画像を確認してください。 
左上の「≡」アイコンから、「フォト」「アーカイブ」「ゴミ箱」「設定➜サポートされていない動画」の四か所を確認してください。
複数のアカウントを所有している場合には、すべてのアカウントでログインしてください。別のアカウントでログインする場合には一旦タブを閉じて新しいタブで同様にログインしなおしてください。

ログインできない場合:

以下を参考にログインを試みてください。 

3.アルバムアーカイブでデータを確認する

Androidの場合:

Chromeブラウザのシークレットモードで https://get.google.com/albumarchive/ にアクセスして画像を確認してください。
左上の「≡」アイコンから、「フォト」「アーカイブ」「ゴミ箱」の三か所を確認してください。
複数のアカウントを所有している場合には、すべてのアカウントでログインしてください。別のアカウントでログインする場合には一旦タブを閉じて新しいタブで同様にログインしなおしてください。

iPhoneの場合:

Safariブラウザのプライベートタブで https://get.google.com/albumarchive/ にアクセスして画像を確認してください。 
左上の「≡」アイコンから、「フォト」「アーカイブ」「ゴミ箱」の三か所を確認してください。
複数のアカウントを所有している場合には、すべてのアカウントでログインしてください。別のアカウントでログインする場合には一旦タブを閉じて新しいタブで同様にログインしなおしてください。

4.Googleフォトでデータが見つからない場合/データが足りない場合

旧端末が手元にある場合:

以下のヘルプを参考に旧端末でバックアップを行ってください。Androidの場合はデバイスのフォルダをバックアップする方法の説明もよく読んでください。

写真や動画をバックアップする (https://support.google.com/photos/answer/6193313?hl=ja)

容量が不足していると 中途半端にしかバックアップできません、以下でバックアップ先アカウントの容量を確認してください。空き容量がない場合はGoogle Oneに加入し必要な容量を購入してください。 

https://one.google.com/storage 

 

なお、旧端末から写真を消してもよい場合には以下の方法で確実にバックアップすることをお勧めします。

機種変更時に写真をGoogleフォトにBackupする方法(https://blog.hikozaru.com/2018/04/iphonegooglebackup.html)

旧端末が手元にない場合:

バックアップできていなかった可能性もあります、その場合はGoogleフォトからの復元は無理です。アカウントが違う可能性もあるので最初の手順から繰り返してください。

2022年1月3日月曜日

GoogleフォトのHEIC画像をJPGでダウンロードするオプション

 iPhoneで撮影したHEIC画像をGoogleフォトにバックアップしWEB素材で使用する際にHEICからJPGへの変換が必要になる。私は別の用途だったのでこのオプションは使えないと思い込んでいましたが、人によっては有用ということが分かったので説明します。

Googleフォト上で画像を編集してからダウンロードするとJPGに変換できるが、編集するのは少し気持ち悪いし手間がかかる。

パソコンでダウンロードするときにJPEGでダウンロードするオプションを紹介する、といってもGoogleが公式に公開しているBase URLsのドキュメント通りにオプションを設定するだけ。注意事項としては位置情報が消されるということですが、WEB素材で使用する場合などはかえって都合がよいのではないでしょうか。

手順

  1. GoogleフォトでHEIC画像を表示する。
  2. 画像を右クリックして「新しいタブで画像を開く」を行う。
  3. 新しいタブのURLの末尾を確認する。
  4. 末尾のオプションを変更してJPGファイルをダウンロードする。
    ”=wXXX-hYYY-no?” ⇒ "=d?" と書き換えるだけです。

おまけ

  • iPhoneでHEICからJPEGに変換する場合は「ショートカット」アプリで作成した以下のショートカットをGoogleフォトアプリから呼び出す。

  • iPhoneのブラウザでGoogleフォトにアップロードするとHEICがJPEGに変換される
  • iPhoneのカメラプリの設定でJPEGで保存する設定がある(実は私はJPG保存設定です。)