アルバムを管理する

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

アルバムの titlecoverPhotomediaItemId を更新するための 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
}