- 您想要使用 Photo API 和 Google Apps 脚本将图像文件添加到相册中。
- 您已在 API 控制台启用 Google Photo API。并且yout访问令牌可用于使用mediaItems.batchCreate方法。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能答案之一。
Usage:
1. 将 Cloud Platform 项目链接到 Google Apps 脚本项目:
关于这一点,你可以看到详细流程here https://gist.github.com/tanaikech/e945c10917fac34a9d5d58cad768832c.
2. 添加范围:
在这种情况下,请添加范围https://www.googleapis.com/auth/photoslibrary
到清单文件(appsscript.json
).
虽然我认为从你的问题来看,上述步骤 1 和 2 已经完成,但我添加了它们,因为我认为这可能对其他用户有用。
3. 示例脚本:
在你的脚本中,我看不到细节uploadToken
。但在你的问题中,我可以确认你已经检索到了uploadToken
。因此,当您想使用脚本进行检索时uploadToken
,请更换uploadToken
给你的。作为脚本的修改点, 1. 包含专辑 ID。 2.没有body
UrlFetchApp 的属性。 3.请使用JSON.stringify()
到有效负载。
function getUplaodToken_(imagefileId) {
var headers = {
"Authorization": "Bearer " + ScriptApp.getOAuthToken(),
"X-Goog-Upload-File-Name": "sampleFilename",
"X-Goog-Upload-Protocol": "raw",
};
var options = {
method: "post",
headers: headers,
contentType: "application/octet-stream",
payload: DriveApp.getFileById(imagefileId).getBlob()
};
var res = UrlFetchApp.fetch("https://photoslibrary.googleapis.com/v1/uploads", options);
return res.getContentText()
}
// Please run this.
function myFunction() {
var imagefileId = "###"; // Please set the file ID of the image file.
var albumId = "###"; // Please set the album ID.
var uploadToken = getUplaodToken_(imagefileId);
var requestHeader = {Authorization: "Bearer " + ScriptApp.getOAuthToken()};
var requestBody = {
"albumId": albumId,
"newMediaItems": [{
"description": "Photo description",
"simpleMediaItem": {
"fileName": "sampleName",
"uploadToken": uploadToken
}}]
};
var options = {
"muteHttpExceptions": true,
"method" : "post",
"headers": requestHeader,
"contentType": "application/json",
"payload" : JSON.stringify(requestBody)
};
var response = UrlFetchApp.fetch("https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate", options);
Logger.log(response);
}
- 在此脚本中,假设图像文件放置在 Google Drive 中。
Note:
参考:
- 类 UrlFetchApp https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app
- 上传媒体 https://developers.google.com/photos/library/guides/upload-media
- 创建媒体项目 https://developers.google.com/photos/library/guides/upload-media#creating-media-item
- 方法:mediaItems.batchCreate https://developers.google.com/photos/library/reference/rest/v1/mediaItems/batchCreate
如果我误解了你的问题并且这不是你想要的方向,我深表歉意。