2

EXIF データのない多くの写真をアップロードしましたが、名前に日付が含まれています。Googleフォトはアップロード日を使用して並べ替えました。名前に日付を使用して変更したいと思います。

今までDrive APIを使って変更日を変更しようとしましたが、変更できましたが使用されていません。imageMediaMetadata.date も変更しようとしましたが、読み取り専用のようです。

コード:

function myFunction() {
  var files = DriveApp.getFilesByName("IMG-20150402-WA0002_1.jpg")
  while (files.hasNext()) {
    var file = files.next();
    var name = file.getName().toUpperCase();
    if (name.indexOf("-WA") > -1) {
      if (name.indexOf("IMG-20") == 0 || name.indexOf("VID-20") == 0) {
        var y = name.substr(4, 4);
        var m = name.substr(8, 2);
        var d = name.substr(10, 2);

        var file2 = Drive.Files.get(file.getId());
        file2.imageMediaMetadata.date = y+"-"+m+"-"+d+"T12:00:00.000Z";
        var file3 = Drive.Files.patch(file2, file.getId());
        Logger.log(name + " no ok " + file3.imageMediaMetadata.date);  // same as file2
      }
    }
  }

それらを削除し、元のファイルを変更して再アップロードすることもできますが、その前に他に方法がないことを確認したいと思います.

ありがとうございました。

4

1 に答える 1

2

おそらく、プログラムで EXIF ヘッダーをファイルに書き込むことができますか?

新しい Google Photos API を使用して古い写真をアップロードするときに、写真の日付を提供する便利な方法も探しています。私の写真には必ずしも EXIF データが含まれているわけではありません。MacOS マシンのディスクにある JPEG の 1 つに作成日/最終更新日を設定してから、Google フォトのWeb インターフェイスを介して手動でアップロードすると、ローカル ディスク上の JPEG ファイルの日付が Google フォトの写真の日付になります。期待される。ファイルには EXIF データがなく、含まれていたとしても同じ日付は含まれないため、Google フォトの Web アップローダは写真のローカル ファイルシステムの日付を尊重しているようです。

次に、Charles Proxy を使用してトラフィックをスニッフィングしようとしましたが、どうやら Web インターフェースは外部開発者と同じ方法で Google Photos API を使用していないようです。https://photoslibrary.googleapis.com/v1/uploadsまたはそうらしい、それっぽい。そのため、そのプロセスをリバースエンジニアリングできませんでした。また、ファイルの作成日が渡された場所もわかりませんでした。

この日付を設定するには、アップロード POST リクエストに HTTP ヘッダーを含めると便利です。これを設定する手段を持つbatchCreate ( https://developers.google.com/photos/library/reference/rest/v1/mediaItems/batchCreate ) メソッドが表示されません。

于 2019-02-09T07:03:38.123 に答える