Asana APIのNode.jsクライアントを使ってタスクを作る

仕事で自分が所属しているチームではプロジェクト管理にAsanaを使っています。

先日、大量のタスクを一気に登録する必要が出てきたのですが、単にタスクを追加するだけではなく、同時に説明もまとめて入力したかったため、いちいち手でやるのも面倒だったのでAPIを使って登録してみました。

Asana APIを利用するにはアクセストークンが必要です。今回は書き捨てのスクリプトなので、Developer ConsoleからPersonal Access Tokenを取得して利用しました。

アクセストークンが準備できたらコードを書いていきます。

まずはライブラリをインストールします。

$ mkdir create-asana-tasks
$ cd create-asana-tasks
$ yarn init -y
$ yarn add asana

JSを書いてindex.jsとして保存します(ACCESS_TOKEN, PROJECT_IDは適宜差し替えてください)。

const asana = require("asana");

const client = asana.Client.create().useAccessToken("ACCESS_TOKEN");

(async () => {
  const project = await client.tasks.getProject("PROJECT_ID");
  console.log(project);

  const tasks = [
    { name: "タスク1", notes: "タスク1です" },
    { name: "タスク2", notes: "タスク2です" },
    { name: "タスク3", notes: "タスク3です" },
  ].reverse();
  for (task of tasks) {
    const result = await client.tasks.create({
      ...task,
      projects: ["PROJECT_ID"],
    });
    console.log(result);
  }
})();

このソースコードに書いてあるタスクはダミーですが、実際にはタスクの配列は元々Googleスプレッドシートに載せていたものをテキストエディターにコピペしてJSの配列に加工しました。

配列をArray#reverse()で逆順にしているのは、APIで作成したタスクはプロジェクトのリストの一番上に順に追加されていくので、最終的に配列の順番とは逆になってしまうのを避けるためです(逆順で追加するとリスト表示にしたとき配列リテラルで定義した順に並びます)。

ちなみに、AsanaのURLはhttps://app.asana.com/0/{ProjectID}/{TaskID}という構造になっているので、タスクかプロジェクトであればURLがわかればAPIを叩かなくても対象のIDがわかります。

実行するとタスクが追加されます。

$ node ./index.js

AsanaのAPIクライアントはNode.js以外にもPython, Java, PHP, Rubyのライブラリがあるようです。慣れている言語でAPIが叩けると便利ですね。