- Вы хотите добавить файл изображения в альбом, используя Photo API с помощью Google Apps Script.
- Вы уже включили Google Photo API на консоли API. И ваш токен доступа может быть использован для использования метода mediaItems.batchCreate.
Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Использование:
1. Связывание проекта облачной платформы с проектом сценариев Google Apps:
Об этом вы можете увидеть подробный поток в здесь .
2. Добавьте область действия:
В этом случае добавьте область действия https://www.googleapis.com/auth/photoslibrary
в файл манифеста (appsscript.json
).
Хотя я думаю, что из вашего вопроса выше, пункты 1 и 2 я уже добавил, потому что подумал, что это может быть полезно для других пользователей.
3. Пример сценария:
В вашем сценарии я не вижу деталей uploadToken
. Но в вашем вопросе я могу подтвердить, что вы уже получили значение uploadToken
. Поэтому, если вы хотите использовать свой скрипт для получения uploadToken
, замените uploadToken
на ваш. Как точка модификации вашего скрипта: 1. Включите идентификатор альбома. 2. У UrlFetchApp нет свойства body
. 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.
Примечание:
Ссылки:
Если я неправильно понял ваш вопрос, и это было не то направление, которое вы хотите, я прошу прощения.