如何从Drive中的jpeg文件中提取EXIF数据

qch*_*cha 2 google-apps-script google-drive-api

我正在尝试使用Google脚本从位于我的某个Google云端硬盘文件夹中的几个jpeg文件中提取EXIF数据.

更准确地说,我想提取拍摄照片的日期,以及先前使用Adobe Lightroom创建的相关关键字/图像描述.

我知道有几个允许从文件中提取EXIF数据的脚本存在于互联网上,但我没有设法链接它们,或者将它们与我自己的Google脚本一起使用.

我怎么能这么容易呢?(我是Google Script的初学者,请尽可能准确)

先感谢您

Mog*_*dad 6

Google Apps脚本的DriveApp服务无法访问您正在寻找的详细信息,但Advance Drive服务可以访问.

Code.gs

您需要按照此处的说明启用高级驱动器服务.

// Demo use of getPhotoExif()
// Logs all files in a folder named "Photos".
function listPhotos() {
  var files = DriveApp.getFoldersByName("Photos").next().getFiles();
  var fileInfo = [];
  while (files.hasNext()) {
    var file = files.next();
    Logger.log("File: %s, Date taken: %s",
               file.getName(),
               getPhotoExif(file.getId()).date || 'unknown');
  }
}

/**
 * Retrieve imageMediaMetadata for given file. See Files resource
 * representation for details.
 * (https://developers.google.com/drive/v2/reference/files)
 *
 * @param {String} fileId    File ID to look up
 *
 * @returns {object}         imageMediaMetadata object
 */
function getPhotoExif( fileId ) {
  var file = Drive.Files.get(fileId);
  var metaData = file.imageMediaMetadata;

  // If metaData is 'undefined', return an empty object
  return metaData ? metaData : {};
}
Run Code Online (Sandbox Code Playgroud)

在Google Drive API中,文件的资源表示包含EXIF数据的属性:

  "imageMediaMetadata": {
    "width": integer,
    "height": integer,
    "rotation": integer,
    "location": {
      "latitude": double,
      "longitude": double,
      "altitude": double
    },
    "date": string,
    "cameraMake": string,
    "cameraModel": string,
    "exposureTime": float,
    "aperture": float,
    "flashUsed": boolean,
    "focalLength": float,
    "isoSpeed": integer,
    "meteringMode": string,
    "sensor": string,
    "exposureMode": string,
    "colorSpace": string,
    "whiteBalance": string,
    "exposureBias": float,
    "maxApertureValue": float,
    "subjectDistance": integer,
    "lens": string
  },
Run Code Online (Sandbox Code Playgroud)