LANG SELRCT

コードを書く場所についてはこちら

2018年2月17日土曜日

asana APIをたたいて新規タスクを登録する


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