Google Photos Library APIを使用して、
Googleフォトのアルバムにエンリッチメントを追加する方法
についてご紹介します。
Googleフォトのエンリッチメントとは
アルバムにいろいろな情報を紐づけることでアルバムのグルーピングが行えます。
Googleフォトのエンリッチメントは、テキスト、位置情報、地図の 3種類に対応しています。
| エンリッチメント | 内容 | UIの場所 |
|---|---|---|
| テキスト | アルバムにアノテーションを付けるために挿入できる書式なしテキストの文字列 | ![]() |
| 位置情報 | 場所にアノテーションを付けるために挿入できる場所の名前 | ![]() |
| 地図 | アルバムに挿入できる出発地と目的地を指定した地図 | ![]() |
エンリッチメントの追加が可能なアルバムは
同じGCP認証、かつGoogle Docs API V1で作成したアルバムのみです。
アルバムの作成方法は
⧉[Google Photos Library API] JavaでGoogleフォトのアルバムを作成・更新する
を参照ください。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
を参照ください。
| No | 目次 | |
|---|---|---|
| 1 | エンリッチメントを追加 | |
| 1 | スコープ | |
| 2 | 実行 | |
| 3 | レスポンスの内容 |
1. エンリッチメントを追加
指定のアルバムにエンリッチメントを追加します。
エンリッチメントの追加が可能なアルバムは
同じGCP認証、かつGoogle Docs API V1で作成したアルバムのみです。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
https://www.googleapis.com/auth/photoslibrary
https://www.googleapis.com/auth/photoslibrary.appendonly
https://www.googleapis.com/auth/photoslibrary.sharing
⧉[Google Photos Library API(V1)] JavaでPhotos Library APIを使う(2.2. PhotosLibraryClientインスタンスを取得)
でスコープを指定してください。
1.2. 実行
public static void main(String[] args) throws Exception{
try(PhotosLibraryClient client = getPhotosLibraryClient()){
NewEnrichmentItem.Builder item_builder = NewEnrichmentItem.newBuilder();
AlbumPosition.Builder position_builder = AlbumPosition.newBuilder();
AddEnrichmentToAlbumResponse response = client.addEnrichmentToAlbum("アルバムID",item_builder.build(),position_builder.build());
System.out.println(response.getEnrichmentItem().getId());
}
}
1.2.1. HTTPリクエスト
POST: https://photoslibrary.googleapis.com/v1/albums/{アルバムID}:addEnrichment
が実行されます。
1.2.2. クエリパラメータ
クエリパラメータはありません。
1.2.3. リクエストボディ
引数で渡す各インスタンス(com.google.photos.library.v1.protoパッケージ)は
各クラスのstaticで用意されているnewBuilder()でBuilderクラスを取得します。
Builderクラスに対してsetメソッドで値を設定し、build()でインスタンスを取得します。
//例
//newBuilder()で各Builderクラスを取得
TextEnrichment.Builder builder = TextEnrichment.newBuilder();
//Builderクラスのsetメソッドで値を設定
builder.setText("テキスト");
//build()メソッドでインスタンスを取得
TextEnrichment text = builder.build();
//本来はシンプルにこう書きますが、何かを試すときはあえて分けて書いてます。
//TextEnrichment.newBuilder().setText("テキスト").build()
アルバムID、エンリッチメント、挿入位置の3つをリクエストボディに設定します。
全て必須です。
1.2.3.1. アルバムID
エンリッチメントを追加するアルバムIDを指定します。
1.2.3.2. エンリッチメント
追加するエンリッチメントを指定します。
NewEnrichmentItem
| メソッド | 引数 | 説明 |
|---|---|---|
| setTextEnrichment | TextEnrichment | アルバムに追加するテキスト |
| setLocationEnrichment | LocationEnrichment | アルバムに追加する場所 |
| setMapEnrichment | MapEnrichment | アルバムに追加する地図 |
TextEnrichment
| メソッド | 引数 | 説明 |
|---|---|---|
| setText | String | アイテムのテキスト |
LocationEnrichment
| メソッド | 引数 | 説明 |
|---|---|---|
| setLocation | Location | アイテムの場所 |
Location
| メソッド | 引数 | 説明 |
|---|---|---|
| setLocationName | String | 表示するビジネスの名前 |
| setLatlng | LatLng | 地図上の場所の位置 |
LatLng
| メソッド | 引数 | 説明 |
|---|---|---|
| setLatitude | double | 緯度(度単位)(-90.0〜90.0) |
| setLongitude | double | 経度(度単位)(-180.0〜180.0 |
MapEnrichment
| メソッド | 引数 | 説明 |
|---|---|---|
| setOrigin | Location | アイテムの出発地 |
| setDestination | Location | アイテムの目的地 |
1.2.3.3. 挿入位置
エンリッチメントを挿入する位置を指定します。
AlbumPosition
| メソッド | 引数 | 説明 |
|---|---|---|
| setPosition | PositionType(enum) | アイテムの位置タイプ |
| setRelativeMediaItemId | String | 【setPosition(PositionType.AFTER_MEDIA_ITEM)の場合のみ必須】 位置の基準となるメディアアイテムID |
| setRelativeEnrichmentItemId | String | 【setPosition(PositionType.AFTER_ENRICHMENT_ITEM)の場合のみ必須】 位置の基準となるエンリッチメントアイテムID |
PositionType
| 定義値 | 内容 |
|---|---|
| POSITION_TYPE_UNSPECIFIED | 設定なし |
| FIRST_IN_ALBUM | アルバムの先頭 |
| LAST_IN_ALBUM | アルバムの最後 |
| AFTER_MEDIA_ITEM | メディアアイテムの後 |
| AFTER_ENRICHMENT_ITEM | エンリッチメントアイテムの後 |
1.3. レスポンスの内容
AddEnrichmentToAlbumResponse
| メソッド | 戻り値 | 説明 |
|---|---|---|
| getEnrichmentItem | EnrichmentItem | 追加されたエンリッチメント |
EnrichmentItem
| メソッド | 戻り値 | 説明 |
|---|---|---|
| getId | String | エンリッチメントアイテムID |
おしまい。。


