我正在尝试使用Google脚本从位于我的某个Google云端硬盘文件夹中的几个jpeg文件中提取EXIF数据。
更准确地说,我想提取拍摄照片的日期,以及先前使用Adobe Lightroom创建的相关关键字/图像描述。
我知道有几个允许从文件中提取EXIF数据的脚本存在于互联网上,但我没有设法将它们链接起来,或者将它们与我自己的Google脚本一起使用。
我怎么能轻易做到这一点? (我是Google Script的初学者,请尽可能准确)
提前谢谢
答案 0 :(得分:6)
Google Apps脚本的DriveApp服务无法访问您正在寻找的详细信息,但Advance Drive服务可以访问。
您需要启用高级云端硬盘服务following instructions here。
// 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 : {};
}
在Google Drive API中,文件的resource representation包含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
},