asanaのAPIをたたいて新規タスクを登録するコードの例です
TOKENの取得方法はhttps://asana.com/guide/help/api/apiに記載されているように
My Profile Settings...→Apps→Manage Developer Apps→Create New Personal Access Token
で取得できます
WORKSPACE_IDはasanaにログインした状態で
https://app.asana.com/api/1.0/workspaces
を開くと取得できます
コード.gs
var TOKEN = "TOKEN"; var END_POINT = "https://app.asana.com/api/1.0/tasks"; var WORKSPACE_ID = "ID"; var PROJECT_ID = "ID"; var TAG1 = "ID"; var TAG2 = "ID"; function POST_to_asana() { var headers = get_headers(); var email = get_email(); var payload = get_payload(email); var options = get_options(headers, payload); var response = UrlFetchApp.fetch(END_POINT, options); var jobj = JSON.parse(response); var task_id = jobj["data"]["id"]; Logger.log([jobj, task_id.toString(10)]); } function get_headers() { var headers = { "Authorization": "Bearer " + TOKEN } return headers; } function get_email() { return Session.getActiveUser().getEmail(); } function get_payload(email) { var followers = [email]; var title = "TITLE"; var detail = "created_by: " + email + "\n\n" + "DETAIL"; var tags = [TAG1, TAG2]; var data = { "data": { "workspace": WORKSPACE_ID, "projects": [PROJECT_ID], "name": title, "notes": detail, "followers": followers, "tags": tags } } var json = JSON.stringify(data); return json; } function get_options(headers, payload) { var options = { "method": "post", "contentType": "application/json", "headers": headers, "payload": payload, "muteHttpExceptions": true } return options; } |
意訳TOKENを設定する END_POINTを設定する WORKSPACE_IDを設定する PROJECT_IDを設定する TAG1のIDを設定する TAG2のIDを設定する この機能がやること get_headers()からheadersを取得して get_email()からemailを取得して get_payload()にemailを渡してpayloadを取得して get_options()にheaders,とpayloadを渡してoptionsを取得して END_POINTにoptionsを付けてfetchする responseをJSON.parseして task_idを取得(指数表記で返ってくるので10進数の文字列にしてみる) jobjと作成したtask_idをログに出す この機能がやること headersを作成して TOKENを入れて 返す この機能がやること アクティブユーザのemailを取得して返す この機能がやること 渡されたemailをfollowersに入れて タイトルを設定して 詳細を設定して タグを設定して dataオブジェクトを作って WORKSPACE_IDを入れて PROJECT_IDを入れて nameにタイトルを入れて notesに詳細を入れて followersを入れて tagsを入れて JSONに変換して 返す この機能がやること optionsのオブジェクトを作って methodはpostにして contentTypeはapplication/jsonにして headersを入れて payloadを入れて muteHttpExceptionsをtrueにして(fetchでエラーが出ても例外を投げない) 返す |
参考
asana
https://asana.com/guide/help/fundamentals/about-asana
CREATE A TASK
https://asana.com/developers/api-reference/tasks#create
Personal Access Token
https://asana.com/developers/documentation/getting-started/auth#personal-access-token
TOKEN取得方法
My Profile Settings...→Apps
→Manage Developer Apps→Create New Personal Access Token
https://asana.com/guide/help/api/api
asana
https://asana.com/guide/help/fundamentals/about-asana
CREATE A TASK
https://asana.com/developers/api-reference/tasks#create
Personal Access Token
https://asana.com/developers/documentation/getting-started/auth#personal-access-token
TOKEN取得方法
My Profile Settings...→Apps
→Manage Developer Apps→Create New Personal Access Token
https://asana.com/guide/help/api/api