GeekFactory

int128.hatenablog.com

完了したタスクのステータスを未完了に戻すには

完了したタスクを未完了に戻すにはステータスをcompletedからneedsActionに変更します。このとき、ステータスの変更と同時に完了日付をクリアする必要があります。具体的には、以下のJSONをリクエストボディに入れてPATCHメソッドを投げます。

{
  id: "taskID",
  status: "needsAction",
  completed: null
}

Java Libraryを使う場合はこんなコードになります:

import com.google.api.client.util.Data;

// タスクを更新する
Task task = new Task();
task.setId(asString("id"));
task.setStatus("needsAction");
task.setCompleted(Data.NULL_DATE_TIME);
Patch patch = tasksService.tasks.patch(asString("tasklistID"), task.getId(), task);
Task patched = patch.execute();

task.setCompleted(null)にするとcompletedプロパティ自体がJSONで発出されなくなるため、com.google.api.client.util.Data.NULL_DATE_TIMEをセットする必要があります。この問題は解決の糸口が分からず2ヶ月以上も放置していましたが、やっと解決しました。よかった。

Google Groupsで回答してくれた方、ありがとうございました。ここ見てないと思うけど。

issue fired
unable to perform Patch for "needsAction" using Java library
http://code.google.com/p/google-api-java-client/issues/detail?id=339

Re: Patch for needsAction using Java library