完了したタスクのステータスを未完了に戻すには
完了したタスクを未完了に戻すにはステータスを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
Re: Patch for needsAction using Java library
unable to perform Patch for "needsAction" using Java library
http://code.google.com/p/google-api-java-client/issues/detail?id=339