ファンリピート社のブログFR note

【Asana API × GAS】自動タスク作成 / より詳細なタスクの設定方法について

弊社ではタスク管理ツールとしてAsanaを使用しています。開発などにおいていくつかのタスクを作成しなければならないとき、その作業を自動化したいと考え、GASを使ったタスク自動作成をできるようにしました。その際に細かな設定をしようとするとなかなか一括でそれらの情報がまとまっているページがなかったので、本ブログでまとめたいと思います。

目次
「システムを短納期かつ低予算で作成したい」
ローコード開発に興味がある

Asanaとは

Asanaはタスクやプロジェクトを管理する企業向けのタスク管理ツールです。タスクの連携やタスクの進捗状況の共有などを行うことができます。

そして、AsanaはAPIを提供しているため外部ツールとの連携が可能です。

GASとは

GASとはGoogle Apps Scriptの頭文字をとったもので、Google Workspace製品と連携するために開発されたクラウドベースのスクリプト言語です。JavaScriptに基づいており、Gmail、カレンダー、ドライブ、スプレッドシートなどのGoogleサービスとの連携を簡単にすることができます。また、連携はGoogleのサービスに留まらず、APIなどを使えばXへの自動投稿やLINEbotとの連携を行うこともできます。

タスク作成の基本

Asana APIのトークンの取得

AsanaでAPIを使用するためには、まずPersonal Access Token(PAT)を取得する必要があります。Asanaの設定から「アプリ」と進み、「ディベロッパーアプリを管理」>「トークンを新規作成」を選択し、トークンを生成します。

トークンは一度しか表示されないので、コピーを忘れずに、

GASのスクリプト

GASエディタに以下のようにスクリプトを記述します。

function createAsanaTask() {
  var url = "https://app.asana.com/api/1.0/tasks";
  var payload = {
    "data": {
      "name": "新しいタスクの名前",
      "notes": "タスクの詳細説明",
      "projects": "あなたのワークスペースのID"
    }
  };
  var options = {
    "method" : "post",
    "headers" : {
      "Authorization" : "Bearer "+"あなたのアクセストークン"//Bearerの後ろのスペース消さないこと
    },
    "contentType": "application/json",
    "payload" : JSON.stringify(payload)
  };
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response.getContentText());
}

コードの説明

「data」で今回作成するタスクの設定を行います。

projects→タスクを追加したプロジェクトを指定します。(project idのみの設定ではprojectの最も上のセクションにタスクが追加されます。

project idはプロジェクトをwebで確認した際のURLで確認できます。

https://app.asana.com/0/{project gid}/{タスクgid}

name→タスク名です。

notes→Asanaチケットの説明欄に記載される内容です。

タスクの細かな設定

上記の方法で設定したもの以外も色々設定したいと思いますので、その方法について説明します。

ここでは、担当者、開始日、期日、追加先セクションの指定方法を紹介します。

これらの設定はpayloadのdataに追加します。

担当者→assigneeとして追加

開始日→start_onとして追加

期日→due_onとして追加

セクション→workspace gidを設定し、membershipsとしてproject gid、section gidを設定する

以下で、実際のコードで確認してみましょう。

var Payload = {
      "data": {
        "workspace":workspaceId,
        "name": projectName,
        "notes": "プロジェクト全体のタスク",
        "memberships":[{'project':projectId,'section':sectionId}],
        "due_on": {期限日},
        "start_on": {開始日},
        "assignee": "担当者のAsanaId"
      }
    };

workspace gidの取得

このURLをクリックすることで確認できます。どこかにコピペしておきます。(設定のときに調べてもOK)

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

section gidの取得

project gidを変更してください。

https://app.asana.com/api/1.0/projects/{project gid}/sections

assigneeのユーザーgidの取得

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

タスクの割り当てられるプロジェクトを追加したい場合は、membershipsの配列に追加してください。

後から追加する場合には以下のソースコードを参考にしてみてください。

Payload.data.memberships.push({
      'project': {プロジェクトgid},
      'section': {セクションgid}
    });//追加したいプロジェクトIDとセクションIDを追加する

サブタスクの追加方法

作成したタスクにサブタスクを追加する方法は、以下の通りです。

基本的な方法はタスクの作成と一緒ですが、urlが異なるので、注意です。

parentTaskIdは親タスクを作成した時のレスポンスから取得しましょう

function addSubtask(parentTaskId) {
  var url = "https://app.asana.com/api/1.0/tasks/" + parentTaskId + "/subtasks";
  var payload = {
    "data": {
      "name": "サブタスクの名前",
      // 他のプロパティ
    }
  };
  var options = {
    "method" : "post",
    "headers" : {
      "Authorization" : "Bearer "+"あなたのアクセストークン"
    },
    "contentType": "application/json",
    "payload" : JSON.stringify(payload)
  };
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response.getContentText());
}

まとめ

いかがだったでしょうか。APIを通じてでも色々な設定ができ、その方法を知っていただくことができたと思います。ぜひ活用してみてください。

最後まで読んでいただきありがとうございます。

※優先順位の設定は2024/4/8現在できないようでした。

「システムを短納期かつ低予算で作成したい」
ローコード開発に興味がある
「煩雑なExcel管理から脱したい」
慣れ親しんだシステムを使って効率化したい
「大規模なシステム開発を行うためにPoCを行いたい」
「社内のDXを進めていきたい」
  • URLをコピーしました!

この記事を書いた人

株式会社ファンリピートのアバター

株式会社ファンリピート

FRnoteは株式会社ファンリピートのメンバーによって運営されている社内ブログです。ノーコード・ローコードの技術ブログを始めとして、最新のIT技術、業務で役立つノウハウなど様々なトピックをまとめています。


目次
閉じる