[Asana API]スプレッドシート連携でタスク登録をしよう Asana APIを利用する下準備

AsanaAPIでスプレッドシート連携とタスク登録Asana API

どうも。ケニー(tsujikenzo)です。生きています。

技術ブログを更新するのも、久しぶりです。このシリーズでは「[Asana API]スプレッドシート連携でタスク登録をしよう」をお届けします。

Asanaとは

Asanaとは、タスク管理ツールです。弊社は、日々のあらゆるタスクをAsanaで管理しています。

無料でも、使える機能がたくさんありますので、タスク管理ツールとしてオススメします。(弊社は、Starterプランに課金しています)

やりたいこと

Asanaへのタスク登録は、さまざまな方法があります。

  • 手動で(複数行のコピペ可能)
  • Gmailとの連携
  • Slackとの連携
  • DropBoxとの連携

しかしながら、大量のタスク登録、タグやプロジェクトやセクションを付けながらタスク登録、という手作業は大変です。

そこで、スプレッドシートを連携しながら、Asana内にタスクを登録するということに、チャレンジしてみましょう。

以下の順番で、ブログをお届けします。(内容は変更する可能性があります)

  1. APIを利用する下準備
  2. タスクの登録
  3. タスクの取得と更新
  4. タスクの取得(応用編)
  5. スプレッドシート連携
  6. GAS(クラス化)

全10回で長いですが、よろしくお願いします。

用語解説

少しだけ、用語解説をします。

  • 【アプリ】・・・このブログで作成するツール(スプレッドシート、GASなど)全体のことです。
  • 【GID】・・・グローバルIDの頭文字です。この世の中でユニークなIDという意味で、通常の意味のIDと同じです。
  • 【APIを叩く】・・・APIを利用することや、サーバーにリクエストを送信することを「叩く」と表現します。
  • 【エンドポイント】・・・リクエストを送信するサーバーの宛先です。
  • 【Asanaのデータベース】・・・Asanaはクラウド上のサーバーに、タスクやプロジェクトに関するデータベースを保有しています。Asana APIを操作して、クラウド上のデータベースを操作します。
  • 【method(メソッド)】・・・Asana APIを使って、サーバーに送る指示の種類・方法のことです。「GET(取得)」や「POST(登録)」や 「DELETE(削除)」などがあります。
  • 【me】・・・わたしの意味です。Asana APIでは、自分自身のことを”me”で表します。

公式リファレンス

アプリを作成する際は、常に公式リファレンスを参照しながら、進めていきましょう。

Overview
This is the interface for interacting with the Asana platform. This reference is generated from our OpenAPI Specification, and contains a comprehensive referenc...

内容の一部は、公式リファレンスから引用させていただきます。

Asana APIを利用する準備

Asana APIの使用を始めるには、まず、かんたんな2つの手順が必要です。

  • 個人用アクセストークンを取得する
  • ワークスペースGIDを取得する

個人用アクセストークンを取得する

まず、開発者コンソールを開きます。Asanaにログインしていないばあいは、ログインしましょう(割愛します)。

Log in - 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を叩くエンドポイントは、こちらです。

https://app.asana.com/api/1.0/tasks

このエンドポイントに対して、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を走らせてみましたが、マイタスクの登録までできてしましたね。

これだけでも感動です。

次回は、「単体タスクを取得したり更新したりしよう」です。お楽しみに。

このシリーズの目次

  1. [Asana API]Asana APIを利用する下準備
  2. [Asana API]単体タスクの取得と更新
  3. [Asana API]単体のタスクの絞り込み取得
  4. [Asana API]複数タスクの取得とフィルター掛け
  5. [Asana API]特定のプロジェクトやセクションにタスクを登録
  6. [Asana API]スプレッドシートとAsana準備編
  7. [Asana API]スプレッドシート設計とGASの下準備
  8. [Asana API]スプレッドシートクラス
  9. [Asana API]カスタムAsanaクラス
  10. [Asana API]グローバルとカスタムメニューとmain
タイトルとURLをコピーしました