どうも。ケニー(tsujikenzo)です。生きています。
技術ブログを更新するのも、久しぶりです。このシリーズでは「[Asana API]スプレッドシート連携でタスク登録をしよう」をお届けします。
Asanaとは
Asanaとは、タスク管理ツールです。弊社は、日々のあらゆるタスクをAsanaで管理しています。
無料でも、使える機能がたくさんありますので、タスク管理ツールとしてオススメします。(弊社は、Starterプランに課金しています)
やりたいこと
Asanaへのタスク登録は、さまざまな方法があります。
- 手動で(複数行のコピペ可能)
- Gmailとの連携
- Slackとの連携
- DropBoxとの連携
しかしながら、大量のタスク登録、タグやプロジェクトやセクションを付けながらタスク登録、という手作業は大変です。
そこで、スプレッドシートを連携しながら、Asana内にタスクを登録するということに、チャレンジしてみましょう。
以下の順番で、ブログをお届けします。(内容は変更する可能性があります)
- APIを利用する下準備
- タスクの登録
- タスクの取得と更新
- タスクの取得(応用編)
- スプレッドシート連携
- GAS(クラス化)
全10回で長いですが、よろしくお願いします。
用語解説
少しだけ、用語解説をします。
- 【アプリ】・・・このブログで作成するツール(スプレッドシート、GASなど)全体のことです。
- 【GID】・・・グローバルIDの頭文字です。この世の中でユニークなIDという意味で、通常の意味のIDと同じです。
- 【APIを叩く】・・・APIを利用することや、サーバーにリクエストを送信することを「叩く」と表現します。
- 【エンドポイント】・・・リクエストを送信するサーバーの宛先です。
- 【Asanaのデータベース】・・・Asanaはクラウド上のサーバーに、タスクやプロジェクトに関するデータベースを保有しています。Asana APIを操作して、クラウド上のデータベースを操作します。
- 【method(メソッド)】・・・Asana APIを使って、サーバーに送る指示の種類・方法のことです。「GET(取得)」や「POST(登録)」や 「DELETE(削除)」などがあります。
- 【me】・・・わたしの意味です。Asana APIでは、自分自身のことを”me”で表します。
公式リファレンス
アプリを作成する際は、常に公式リファレンスを参照しながら、進めていきましょう。
内容の一部は、公式リファレンスから引用させていただきます。
Asana APIを利用する準備
Asana APIの使用を始めるには、まず、かんたんな2つの手順が必要です。
- 個人用アクセストークンを取得する
- ワークスペースGIDを取得する
個人用アクセストークンを取得する
まず、開発者コンソールを開きます。Asanaにログインしていないばあいは、ログインしましょう(割愛します)。
「トークンを新規作成」をクリックします。
トークンを名を入力し、「Asana API利用規約に同意します」にチェックを入れて、「トークンを作成」をクリックします。
トークンが表示されるので「コピー」をクリックして、メモ帳などに貼り付けておきましょう。最後に「完了」をクリックします。
ワークスペースGIDを取得する
「ワークスペース」とは、プロジェクトやタスクに共同で取り組む人々の集まりです。
ワークスペースは、組織のように共通の会社メールドメインを必要とせず、どんなグループでも使えます。
個人のメールアドレス(@gmail.comや@yahoo.co.jpなど)でAsanaアカウントを作成したユーザーは、ワークスペースを使うことになります。
引用元:asana Help Center ワークスペースについて
Asana APIを利用するさいは、ご自身のワークスペースGIDを指定して、作業を進めます。※1つのアプリでワークスペースを切り替えることは、あまりないと思います。1ワークスペースにつき1アプリ、という設計がいいでしょう。
ワークスペースGIDの確認方法は、ブラウザでこちらのURLを開くだけです。開いたページにGIDが表示されています。※ブラウザでAsanaを開いたことがない方は、「Asana ログイン」などでGoogle検索してみましょう。
Asana APIを叩く
Asanaで、タスクのAPIを叩くエンドポイントは、こちらです。
このエンドポイントに対して、GASで作成したプログラムを送信すると、なにかしらの返信がきたり、Asanaのデータベースを操作できます。
さっそく、リクエストを送信してみましょう。
Asana APIにリクエストを送信する
任意のスプレッドシートを用意して、スクリプトエディタを開きます。(スタンドアロンスクリプトでもかまいません)
Googleアカウントへのアクセス承認画面が出たばあいは、適宜、許可をしてください(割愛します)。
適当なスクリプトファイルに、以下のコードを貼り付けます。アクセストークンとGIDをコピペしておきましょう。
このプログラムは、Asanaにマイタスクを追加するものです。
// アクセストークンとGIDを設定
const ACCESS_TOKEN = "あなたのアクセストークン";
const WORKSPACE_GID = "あなたのGID";
function createAsanaTask() {
const accessToken = ACCESS_TOKEN;
const workspaceId = WORKSPACE_GID;
const url = 'https://app.asana.com/api/1.0/tasks'; // Asana タスクエンドポイント
const payload = {
data: {
workspace: workspaceId,
name: "サンプルタスク",
assignee: "me" //タスクが割り当てられるユーザーのID。'me'と設定するとAPIを呼び出したユーザーに割り当てられます。
}
};
const options = {
method: 'post',
contentType: 'application/json',
headers: {
'Authorization': 'Bearer ' + accessToken
},
payload: JSON.stringify(payload),
muteHttpExceptions: true // HTTP例外をミュートする(エラーレスポンスを取得するため)
};
try {
const response = UrlFetchApp.fetch(url, options);
const task = JSON.parse(response.getContentText());
console.log(task);
} catch (e) {
console.log("Exception when calling TasksApi->create_task: " + e.toString());
}
}
関数createAsanaTask()を、実行しましょう。
実行ログに、なが~いテキスト(レスポンスオブジェクト)が表示されたら、実行が成功しています。
Asanaのマイタスクを確認する
Asanaを開いて、マイタスクを確認しましょう。
「サンプルタスク」という名前のタスクが追加されていたら、成功です。ちょっと感動しますね。
これで、GASからAsana APIを叩けるということが分かりました。
まとめ
以上で、「Asana APIを利用する下準備」をお送りしました。
APIを叩く下準備として、APIが使えるかGASを走らせてみましたが、マイタスクの登録までできてしましたね。
これだけでも感動です。
次回は、「単体タスクを取得したり更新したりしよう」です。お楽しみに。