LoginSignup
3
1

More than 3 years have passed since last update.

iOSでお気に入りの写真以外を一括削除する

Posted at

こんにちは。
今回はiOSのカメラロールで、お気に入りの写真以外を一括削除するショートカットを作ったので紹介します。
ちなみにちょっといじると選択したフォルダ以外の写真を一括削除することもできます。

目次

  1. 完成形
  2. 必要なアプリ
  3. ざっくりな流れと説明
  4. できあがり
  5. あとがき

1.完成形

お気に入りの写真以外を一括削除

ちなみに、実行すると本当に削除して良いか最初に尋ねられます。(なんか怖いから)
これは仕様なのですが、前述とは別に削除を実行する際も再度尋ねられます。
まぁボタン一つ押したら全部消えちゃうのも怖いですし確認はあった方がいいかなと個人的に思ってます。

ショートカットが開けない時は、
iPhoneの設定→ショートカット→信頼されていないショートカットを許可
にチェックを入れると開けるようになります。(※自己責任でお願いします)

また、そのチェックさえ入れられない時は、一度ショートカットアプリでなんらかのショートカットを実行するとチェックを入れられるようになります。

2.必要なアプリ

3. ざっくりな流れと説明

細かいところまで説明するとめちゃくちゃ長くなりそうなのでとりあえずスクショを貼っておきます。

最初は写真と動画をまとめて消したかったんですが、いい方法が思いつかなかったので写真と動画は別々に削除するようにしています。

また、タイトルでは「一括削除」と書いていますが、厳密には300件ずつ自動で削除する感じになっています。
また、先ほど「300件ずつ自動で削除」と書いていますが、厳密には300件ずつ手動で削除か否かを選択していきます。(苦ではない)
イメージ 5.PNG
イメージ 6.PNG

  1. 変数nに300を設定しているのは、後で写真を削除する時に本当に一括で選択して削除しようとすると、仕様でエラーが出るからです。(たぶんメモリエラー的な。)
  2. すべての写真を検索(条件)」で以下に当てはまるアイテムを指定しています。
    • 写真・動画のうち写真のみ
    • よく使う項目ではない(=お気に入りではない)
    • 非表示ではない

      ちなみにここで写真を指定した理由は、ただ単にアイテムの数を取得したいからであり、ここで指定した写真をそのまま削除するわけではありません。
  3. 次の場合に写真を検索 の 項目 の数を数える」らへんでは、後に繰り返し処理を行う際のループ数を決定しています。
  4. 繰り返しの中の 「すべての写真 を検索(条件)」では、(最新のものから)写真を300件選んで、次のアクションでそれを削除しています。
    上記の繰り返し処理をして、すべてのお気に入り以外の写真を分割で削除します。
  5. お次は動画です。
    しかしやることはほとんど変わりないので説明は省きます。 ちなみに変数mが50なのは、ファイルサイズが写真よりも大きいと考え、エラーにならないようにしています。
  6. 終わり!


なんかエラー出るんだけど

n,mも300件,50件と設定していますが、一つ当たりのファイルサイズが大きいとこれでもエラーが出る場合があります。その時はn,mの値を減らしてみましょう。

最初の確認は必要ない

最初のアラートを消してください。

間違えて実行して写真消しちゃった

カメラロールには「最近削除した項目」という項目があるのでそこから復元してください。

4. できあがり

完成したら、ホーム画面からでもウィジェットからでも実行できるようになるはずです。(たぶん)(そんなに実行の頻度高くないだろうからいらなさそう)

5. あとがき

ショートカットアプリが楽しくていろいろ試してみてます。
JavaScriptを活かしてできることもあるみたいですが、JSはあまり詳しくなくて歯痒さがあります。

無駄なところは多々ありますがご愛嬌と言うことで・・・
重大なミスやさすがにこうした方がいいとかがあればぜひ教えてください。

ではまた!

3
1
0

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
3
1