我正在嘗試“修補”(更新)我的 Google 照片庫中的 mediaItem 以設定新的描述,但遇到了意外的 400 錯誤。我指的是https://developers.google.com/photos/library/guides/manage-media#change_media_item_descriptions上的文章,了解如何操作。我正在撰寫一個 Google Apps 腳本專案,其他 API 呼叫作業正常,比如列出專輯和專輯中的 mediaItems。權限范圍是https://www.googleapis.com/auth/photoslibrary.readonly https://www.googleapis.com/auth/photoslibrary.edit.appcreateddata.
這是我的代碼的樣子:
// thisMediaItem is a media item returned from a previous call
var id = thisMediaItem.id;
Logger.log("Here is the full JSON for the media item " id);
Logger.log(JSON.stringify(thisMediaItem));
// now try "patching" the media item with a new description
var url = 'https://photoslibrary.googleapis.com/v1/mediaItems/' id "?updateMask=description";
var response = UrlFetchApp.fetch(url, {
headers: { Authorization: 'Bearer ' photoService.getAccessToken() },
muteHttpExceptions: true,
method: "patch",
payload: { "description": "my new description" }
});
Logger.log(response.getContentText());
這是我在日志中得到的,關于未找到描述欄位的內容,盡管我確實將它包含在有效負載中。我嘗試從成員名稱中洗掉引號,但它仍然不起作用。
5:12:24 PM Info Here is the full JSON for the media item AHndD0EfrVXtMUHxuCOT3V81D6ZUr8YkRz3a6PvZE6k8PCF9pMCh4gxj1IHxkVVrkpVnpQ12x5J9nznJICJ7ciDOtQbn2hJ6DA
5:12:24 PM Info {"id":"AHndD0EfrVXtMUHxuCOT3V81D6ZUr8YkRz3a6PvZE6k8PCF9pMCh4gxj1IHxkVVrkpVnpQ12x5J9nznJICJ7ciDOtQbn2hJ6DA","description":"lake","productUrl":"https://photos.google.com/lr/album/AHndD0FrK2VQxeFhlCuOrJFV-C8YrwjI_eM2nFnBTuVh_S1QerqpNOFoS8o2X0tz7Xh_DJLnH68s/photo/AHndD0EfrVXtMUHxuCOT3V81D6ZUr8YkRz3a6PvZE6k8PCF9pMCh4gxj1IHxkVVrkpVnpQ12x5J9nznJICJ7ciDOtQbn2hJ6DA","baseUrl":"https://lh3.googleusercontent.com/lr/AFBm1_bpo-9VZkKEUKVmLGwZifhWZe_18r5R1eWh53o5YghfnyFH11JOFSU3L_6gc6h5xktjE7qHKAYtBX5yEQoEOhkGfxFQjmKcHXUa52QBUjg2jMvyyIpoVjP27fYP5GPUEUn7ncADwqLeTSKBbIF-sGZuKt2QBaYNR3a3icFxBUz8x2mC_PIU6SsKWeVrKTO8v6yx84GjfSN3XbDlmRKLdAiZ7OpBXk6TP4pLEVONrkEKGpX_cy_-1AEejEF3hQNgqxwlPmtzrbiRJIO25gfCLANEdxMVt_LjmM5Avb0TiZTZ2SdUrUMWQNA0YAGH6D7KE79CTF34jKfui_EM5_eslwujqRwwoh_l6oorsCqMyVHjHqqfQ2QIPEa3VepucQD5RiIWXEImXSQaxkChz0CF-KB7u9vuj-sS8TJB2CefsHuhNiyq0owvEB8swZM07RpWKm1-4mlS286uCKgfPOeNWyWJETOWs9u1GJHCVH4N1zj2MhxSaGjAHD-3H9OgcIIK56mBJiNjLmOCJY_uTMz-tJ8INdBSp8vv979bREzXfcB23s7dvrz11sjvi7YcVRRDRchq0kEuyuXoC87QyY0YBt-QlSmcU7yXZEQ_ZwZsTzQJXawtMCffDYumUCjBCcx3mrlahGTHNGmjsWDm5SHi3eolC6rBWxno1B2S_2Z-5_vjHfbLMTyIzEmg6YuB__0vIdyaY4E5DNavqL7AF-y4T79eKru9bCXgGUDeBb52qySsAJHny14tofcWdu0bc0fwXjAFH1ZxwRbQTIXPXz1uHPea81ksZai-zGzcax6WOC-0awE0IEWCq5NB2goplxmrMLReHO_nT1L1cQ","mimeType":"image/jpeg","mediaMetadata":{"creationTime":"1966-01-01T20:00:26Z","width":"2640","height":"1778","photo":{"cameraMake":"Nikon","cameraModel":"LS-5000"}},"filename":"slide0011.jpg"}
5:12:24 PM Info {
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name \"description\": Cannot bind query parameter. Field 'description' could not be found in request message.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"description": "Invalid JSON payload received. Unknown name \"description\": Cannot bind query parameter. Field 'description' could not be found in request message."
}
]
}
]
}
}
uj5u.com熱心網友回復:
請在您的腳本中進行如下修改。
從:
var response = UrlFetchApp.fetch(url, {
headers: { Authorization: 'Bearer ' photoService.getAccessToken() },
muteHttpExceptions: true,
method: "patch",
payload: { "description": "my new description" }
});
至:
var response = UrlFetchApp.fetch(url, {
headers: { Authorization: 'Bearer ' photoService.getAccessToken() },
muteHttpExceptions: true,
method: "patch",
payload: JSON.stringify({ "description": "my new description" }),
contentType: "application/json"
});
筆記:
- 此修改假設媒體是由您的腳本的同一客戶端上傳的,并且媒體項 ID 是有效 ID。請注意這一點。
參考:
- 方法:mediaItems.patch
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/488096.html
