弊社ではタスク管理ツールとして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現在できないようでした。