Google フォトでは、アルバムを使用して写真やその他のメディア アイテムを整理できます。 メディア アイテムは 1 つ以上のアルバムに関連付けることができます。メディア アイテムとアルバムの関連付けを開始するには、まずアルバムを作成する必要があります。
必要な認可スコープ
アルバムを作成するには、次の認可スコープのうち少なくとも 1 つをアプリでリクエストする必要があります。
photoslibrary.appendonly
photoslibrary.sharing
アルバムの作成後にタイトルやカバー写真を変更するには、photoslibrary.edit.appcreateddata
スコープを使用します。
新しいアルバムを作成する
アルバムを作成するには、albums.create
を呼び出して title
を含めます。title
は 500 文字に制限されています。
この呼び出しはアルバムを返します。アプリはこの情報からアルバム ID を保存し、その ID を使用して特定のアルバムにメディア アイテムをアップロードできます。
REST
POST リクエストのヘッダーは次のとおりです。
POST https://photoslibrary.googleapis.com/v1/albums Content-type: application/json Authorization: Bearer oauth2-token
リクエストの本文は次のようになります。
{ "album": { "title": "new-album-title" } }
成功すると、レスポンスはアルバムを返します。
{ "productUrl": "album-product-url", "id": "album-id", "title": "album-title", "isWriteable": "whether-you-can-write-to-this-album" }
Java
try { Album createdAlbum = photosLibraryClient.createAlbum("My Album"); // The createdAlbum object contains properties of an album String productUrl = createdAlbum.getProductUrl(); // coverPhotoBaseUrl shouldn't be used as is. Append parameters to base URLs before use String albumCoverImage = createdAlbum.getCoverPhotoBaseUrl() + "=w2048-h1024"; boolean isWriteable = createdAlbum.getIsWriteable(); } catch (ApiException e) { // Handle error }
PHP
try { $newAlbum = PhotosLibraryResourceFactory::album("My Album"); $createdAlbum = $photosLibraryClient->createAlbum($newAlbum); // The createdAlbum object contains properties of an album $albumId = $createdAlbum->getId(); $productUrl = $createdAlbum->getProductUrl(); // coverPhotoBaseUrl shouldn't be used as is. Append parameters to base URLs before use $albumCoverImage = $createdAlbum->getCoverPhotoBaseUrl() . '=w2048-h1024'; $isWriteable = $createdAlbum->getIsWriteable(); } catch (\Google\ApiCore\ApiException $e) { // Handle error }
アルバムのタイトルとカバー写真の変更
アルバムのタイトルまたはカバー写真を変更するには、アルバムの ID を指定して album update
call
を作成し、新しいタイトルまたは新しいカバー写真のメディア アイテム ID をリクエストに含めます。変更するには、photoslibrary.edit.appcreateddata
承認スコープを使用する必要があります。
アルバム タイトルは 500 文字以内で指定してください。カバー メディア アイテムはアルバム所有者が所有し、カバーするアルバムに属している必要があります。
REST
アルバムの title
と coverPhotomediaItemId
を更新するための PATCH リクエスト ヘッダーは次のとおりです。
PATCH https://photoslibrary.googleapis.com/v1/albums/album-id?updateMask=title&updateMask=coverPhotoMediaItemId
このリクエストでは、URL の updateMask
パラメータで指定されるフィールド マスクを含めることで、更新するプロパティを決定します。updateMask
パラメータは、更新するアルバム プロパティごとに渡す必要があります。
更新するプロパティごとに、その詳細をリクエストの本文に含めます。
{ "title": "new-album-title", "coverPhotoMediaItemId": "new-cover-media-item-id" }
成功すると、更新された album
の詳細がレスポンスで返されます。
{ "id": "album-id", "title": "new-album-title", "productUrl": "album-product-url", "isWriteable": "true-if-user-can-write-to-this-album", "mediaItemsCount": "number-of-media-items-in-album", "coverPhotoBaseUrl": "cover-photo-base-url_use-only-with-parameters", "coverPhotoMediaItemId": "new-cover-media-item-id" }
Java
try { // Update the cover photo of the album given a MediaItem object. Album updatedAlbum = photosLibraryClient.updateAlbumCoverPhoto(album, newCoverMediaItem); // Alternatively, you can update the cover photo of the album given a media item ID. // The specified media item identifier must be not null or empty. // Album updatedAlbum = photosLibraryClient.updateAlbumCoverPhoto(album, "new-cover-media-item-id"); } catch (ApiException e) { // Handle error } try { // Update the title of the album. // The new title must not be null or empty. Album updatedAlbum = photosLibraryClient.updateAlbumTitle(album, "new-album-title"); } catch (ApiException e) { // Handle error }
PHP
try { // ID of the album to update. $albumId = "ALBUM_ID"; // Media item ID of the new cover photo. // Must not be null or empty. $newCoverMediaItemId = "new-cover-media-item-id"; // Update the cover photo of the album. $mediaItem = $photosLibraryClient->updateAlbumCoverPhoto($albumId, $newCoverMediaItemId); } catch (\Google\ApiCore\ApiException $e) { // Handle error } try { // ID of the album to update. $albumId = "ALBUM_ID"; // New title of the album. // Must not be null or empty. $newTitle = "new-album-title"; // Update the title of the album. $mediaItem = $photosLibraryClient->updateAlbumTitle($albumId, $newTitle); } catch (\Google\ApiCore\ApiException $e) { // Handle error }
アルバムにメディア アイテムを追加する
ユーザーの Google フォト ライブラリからアルバムにメディア アイテムを追加するには、albums.batchAddMediaItems
を呼び出します。メディア アイテムは、この呼び出しで指定された順序でアルバムの最後に追加されます。
無効なメディア アイテムまたはアルバムを指定すると、リクエスト全体が失敗します。部分的な成功はサポートされていません。
各アルバムには最大 20,000 個のメディア アイテムを含めることができます。この上限を超えるアイテムの追加リクエストは失敗します。
アプリが作成したアルバムに追加できるのは、アプリによってアップロードされたメディア アイテムのみです。メディア アイテムもユーザーのライブラリに存在する必要があります。アルバムを共有している場合は、ユーザーがオーナーか、ユーザーがすでにアルバムに参加している共同編集者である必要があります。
アルバムにメディア アイテムを追加するには、メディア アイテムとアルバムの識別子を指定して albums.batchAddMediaItems
を呼び出します。
REST
POST リクエストのヘッダーは次のとおりです。
POST https://photoslibrary.googleapis.com/v1/albums/album-id:batchAddMediaItems Content-type: application/json Authorization: Bearer oauth2-token
リクエストの本文は次のようになります。
{ "mediaItemIds": [ "media-item-id", "another-media-item-id", ... ] }
成功すると、レスポンスは空の JSON レスポンスと HTTP 成功ステータスを返します。
Java
try { // List of media item IDs to add List<String> mediaItemIds = Arrays .asList("MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID"); // ID of the album to add media items to String albumId = "ALBUM_ID"; // Add all given media items to the album photosLibraryClient.batchAddMediaItemsToAlbum(albumId, mediaItemIds); } catch (ApiException e) { // An exception is thrown if the media items could not be added }
PHP
try { // List of media item IDs to add $mediaItemIds = ["MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID"]; // ID of the album to add media items to $albumId = "ALBUM_ID"; // Add all given media items to the album $response = $photosLibraryClient->batchAddMediaItemsToAlbum($albumId, $mediaItemIds); } catch (\Google\ApiCore\ApiException $e) { // Handle Error }
アルバムからメディア アイテムを削除する
アルバムに追加したメディア アイテムを削除するには、albums.batchRemoveMediaItems
を呼び出します。
無効なメディア アイテムを指定すると、リクエスト全体が失敗します。部分的な成功はサポートされません。
削除できるのは、アプリケーションがアルバムに追加したメディア アイテム、またはアップロードの過程でアルバムに作成されたメディア アイテムのみです。アルバムを共有している場合、そのアルバムのオーナーの代理として操作している場合にのみ、他の共同編集者が追加したアイテムを削除できます。
アルバムからメディア アイテムを削除するには、メディア アイテムとアルバムの識別子を指定して albums.batchRemoveMediaItems
を呼び出します。
REST
POST リクエストのヘッダーは次のとおりです。
POST https://photoslibrary.googleapis.com/v1/albums/album-id:batchRemoveMediaItems Content-type: application/json Authorization: Bearer oauth2-token
リクエストの本文は次のようになります。
{ "mediaItemIds": [ "media-item-id", "another-media-item-id", ... ] }
成功すると、レスポンスは空の JSON レスポンスと HTTP 成功ステータスを返します。
Java
try { // List of media item IDs to remove List<String> mediaItemIds = Arrays .asList("MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID"); // ID of the album to remove media items from String albumId = "ALBUM_ID"; // Remove all given media items from the album photosLibraryClient.batchRemoveMediaItemsFromAlbum(albumId, mediaItemIds); } catch (ApiException e) { // An exception is thrown if the media items could not be removed }
PHP
try { // List of media item IDs to remove $mediaItemIds = ["MEDIA_ITEM_ID", "ANOTHER_MEDIA_ITEM_ID"]; // ID of the album to remove media items from $albumId = "ALBUM_ID"; // Remove all given media items from the album $response = $photosLibraryClient->batchRemoveMediaItemsFromAlbum($albumId, $mediaItemIds); } catch (\Google\ApiCore\ApiException $e) { // Handle Error }