[Google Tasks API(V1)] Javaでタスクを取得する

Google Tasks API V1(Java)を使用して、
タスクを取得する方法
についてご紹介します。

:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a)
を参照ください。
:::

|No||目次|
|---|---|---|
|1||[タスク一覧を取得](#1-タスク一覧を取得)|
||1|[スコープ](#11-スコープ)|
||2|[実行](#12-実行)|
||3|[レスポンスの内容](#13-レスポンスの内容)|
|2||[タスクリストを取得](#2-タスクリストを取得)|
||1|[スコープ](#21-スコープ)|
||2|[実行](#22-実行)|
||3|[レスポンスの内容](#23-レスポンスの内容)|

## 1. タスク一覧を取得
指定したタスクリスト内のタスク一覧を取得します。

### 1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
TasksScopes.TASKS
TasksScopes.TASKS_READONLY
```
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う(2.2 Tasksインスタンスを取得)](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a#22-tasksインスタンスを取得)
でスコープを指定してください。

### 1.2. 実行

```java
public static void main(String[] args) throws Exception{
    Tasks tasks = getTasks();
    
    Tasks.TasksOperations op = tasks.tasks();
    Tasks.TasksOperations.List list = op.list("タスクリストID");
    
    com.google.api.services.tasks.model.Tasks res = list.execute();
    System.out.println(res);
}
```
#### 1.2.1. HTTPリクエスト
GET:　https:\//tasks.googleapis.com/tasks/v1/lists/{タスクリストID}/tasks
が実行されます。

#### 1.2.2. クエリパラメータ
Tasks.TasksOperations.Listのsetメソッドにより、クエリパラメータを追加できます。

|メソッド|引数|説明|
|---|---|---|
|setCompletedMax|String|フィルタに使用するタスクの完了日の上限|
|setCompletedMin|String|フィルタに使用するタスクの完了日の下限|
|setDueMax|String|フィルタするタスクの期限の上限|
|setDueMin|String|フィルタするタスクの期限の下限|
|setUpdatedMin|String|フィルタに使用するタスクの最終更新時間の下限|
|setShowCompleted|Boolean|完了したタスクが結果で返されるか|
|setShowDeleted|Boolean|削除されたタスクが結果で返されるか|
|setShowHidden|Boolean|結果で非表示のタスクが返されるか|
|setMaxResults|Integer|取得するタスクの最大数<br>デフォルトは20、最大値は100|
|setPageToken|String|次のページで前のリスト要求を継続するためのトークン<br>**レスポンスのgetNextPageTokenで取得が可能**|

### 1.3. レスポンスの内容

#### Tasks
(com.google.api.services.tasks.model.Tasks)

|メソッド|戻り値|説明|
|---|---|---|
|getKind|String|リソースの種類<br>固定文字列："tasks#tasks"|
|getEtag|String|Eタグ|
|getNextPageToken|String|次のページのページトークン<br>リストの最後の場合はNULL|
|getItems|List\<[Task](#Task)\>|タスク|

#### Task

|メソッド|戻り値|説明|
|---|---|---|
|getKind|String|リソースの種類<br>固定文字列："tasks#task"|
|getId|String|タスクID|
|getEtag|String|Eタグ|
|getTitle|String|タスクのタイトル|
|getUpdated|String|タスクの最終更新日時|
|getSelfLink|String|このタスクを指すURL|
|getParent|String|親のタスクID|
|getPosition|String|同じ親タスクの下または最上位にある兄弟タスク間のタスクの位置|
|getNotes|String|タスクについてのメモ|
|getStatus|String|タスクのステータス<br>"needsAction"、"completed"|
|getDue|String|タスクの期限|
|getCompleted|String|タスクの完了日|
|getDeleted|Boolean|タスクが削除されたか|
|getHidden|Boolean|タスクが非表示か|
|getLinks|List\<[Linkes](#linkes)|リンク情報|
|getWebViewLink|String|GoogleToDoリストのタスクURL|

#### Linkes

|メソッド|戻り値|説明|
|---|---|---|
|getType|String|リンクの種類|
|getDescription|String|説明文(HTML)|
|link|String|URL|


## 2. タスクを取得
指定したタスクリスト内のタスクを取得します。

タスクIDは、
[1. タスク一覧を取得(Task)](#task)のgetId()で取得した値を使います。

### 2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
```
TasksScopes.TASKS
TasksScopes.TASKS_READONLY
```
[⧉[Google Tasks API(V1)] JavaでTasks APIを使う(2.2 Tasksインスタンスを取得)](https://qiita.com/doran/items/8a3b7e24d9e0417a7f9a#22-tasksインスタンスを取得)
でスコープを指定してください。

### 2.2. 実行

```java
public static void main(String[] args) throws Exception{
    Tasks tasks = getTasks();
    
    Tasks.TasksOperations op = tasks.tasks();
    Tasks.TasksOperations.Get get = op.get("タスクリリストID","タスクID");
    
    Task res = get.execute();
    System.out.println(res);
}
```
#### 2.2.1. HTTPリクエスト
GET:　https:\//tasks.googleapis.com/tasks/v1/lists/{タスクリストID}/tasks/{タスクID}
が実行されます。

#### 2.2.2. クエリパラメータ
クエリパラメータはありません。

### 2.3. レスポンスの内容

#### Task

[1.3. レスポンスの内容(Task)](#task)と同じです。

<br>
<br>
おしまい。。