どうも。ケニー(tsujikenzo)です。このシリーズでは「[Asana API]スプレッドシート連携でタスク登録をしよう」をお届けしています。
今日は5回目です。
前回のおさらい
前回は、「複数タスクの取得とフィルター掛け」をお届けしました。
いよいよ、やりたいこと(業務でバリバリ使えそう)の本丸に近付いております。
今回は、「特定のプロジェクトやセクションにタスクを登録」です。
今日のアジェンダ
- 特定のプロジェクトにタスクを追加
- 特定のセクションにタスクを追加
- 特定のタグをタスクを追加
特定のプロジェクトにタスクを追加
こちらの回で、タスクの登録を行いました。マイタスクへ登録されるというシンプルなものでした。
こちらに、特定のプロジェクトを追加してみましょう。
タスクにプロジェクトを追加する
タスクの詳細は、プログラム中のpayloadという項目で追記できます。
以下のコードを、スクリプトファイルにコピペして実行してみましょう。
function createTaskInProject() {
const accessToken = ACCESS_TOKEN; //グローバルエリアに記述済み
const projectId = PROJECT_ID; //グローバルエリアに記述済み
const url = 'https://app.asana.com/api/1.0/tasks';
const payload = {
data: {
name: 'New Task Name', // 新しいタスクの名前
notes: 'Details about the new task.', // タスクの詳細
projects: [projectId] // タスクを追加するプロジェクトのIDリスト
}
};
const options = {
method: 'post',
headers: {
'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'application/json'
},
payload: JSON.stringify(payload),
muteHttpExceptions: true // HTTP例外をミュートする
};
try {
const response = UrlFetchApp.fetch(url, options);
const jsonResponse = JSON.parse(response.getContentText());
console.log(jsonResponse);
} catch (e) {
console.log("Exception when creating a task: " + e.toString());
}
}
マイタスクではなく、指定したプロジェクトにタスクが追加されていたら成功です。
特定のセクションにタスクを追加
同様に、タスク作成時に、セクションを指定することもできます。
Asanaでは、タスクに複数のプロジェクトを紐づけることができますよね。
これは、Pyloadに、membershipsプロパティで、配列で指定可能です。
const payload = {
memberships: [{'project': projectId1, 'section': sectionId1},{'project': projectId2, 'section': sectionId2}],
}
以下のコードを、スクリプトファイルにコピペして実行してみましょう。
function createTaskInAsanaSection() {
const accessToken = ACCESS_TOKEN; //グローバルエリアに記述済み
const workspaceId = WORKSPACE_GID; //グローバルエリアに記述済み
const projectId = PROJECT_ID; //グローバルエリアに記述済み
const sectionId = SECTION_ID; //グローバルエリアに記述済み
const url = 'https://app.asana.com/api/1.0/tasks';
const payload = {
data: {
workspace: workspaceId,
memberships: [{'project': projectId, 'section': sectionId}],
name: "はじめてのタスク登録",
notes: "はじめてのタスク登録で緊張しています",
assignee:"me"
}
};
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 jsonResponse = JSON.parse(response.getContentText());
console.log(jsonResponse);
} catch (e) {
console.log("Exception when calling API: " + e.toString());
}
}
タスクに、複数のプロジェクトとセクションが設定できていれば成功です。
特定のタグをタスクを追加
タグはよく使う機能です。重要度のようなものから、営業エリアやメモなど、なんでも付与して管理しています。
とくに、カスタムフィールド機能(要課金)を使うと、さらに便利な使い方ができます。
弊社では、売上や粗利などの営業成績管理に重宝しています。
今回は、無料で使える範囲で、お届けします。
タグIDを調べる
まず、ワークスペース内のタグGIDを調べます。
タグGIDを取得するコードはこちらです。
function getTagsInWorkspace() {
const accessToken = ACCESS_TOKEN; //グローバルエリアに記述済み
const workspaceId = WORKSPACE_GID; //グローバルエリアに記述済み
const url = `https://app.asana.com/api/1.0/workspaces/${workspaceId}/tags`;
const options = {
method: 'get',
headers: {
'Authorization': 'Bearer ' + accessToken,
'Accept': 'application/json'
},
muteHttpExceptions: true // HTTP例外をミュートする(エラーレスポンスを取得するため)
};
try {
const response = UrlFetchApp.fetch(url, options);
const jsonResponse = JSON.parse(response.getContentText());
// タグ一覧をログに出力
jsonResponse.data.forEach(tag => {
console.log(`Tag Name: ${tag.name}, Tag ID: ${tag.gid}`);
});
} catch (e) {
console.log("Exception when calling API: " + e.toString());
}
}
実行ログに表示されるTag ID(タグGID)を、メモしておきましょう。
タスク作成時にタグを追加する
タスク作成時に、複数のタグを付与したいばあいは、tagsプロパティで配列で指定します。
以下のコードを、スクリプトファイルにコピペして実行してみましょう。
function createTaskWithTags() {
const accessToken = ACCESS_TOKEN; //グローバルエリアに記述済み
const workspaceId = WORKSPACE_GID; //グローバルエリアに記述済み
const projectId = PROJECT_ID; //グローバルエリアに記述済み
const sectionId = SECTION_ID; //グローバルエリアに記述済み
const url = 'https://app.asana.com/api/1.0/tasks';
const payload = {
data: {
workspace: workspaceId,
memberships: [{'project': projectId, 'section': sectionId}],
name: "はじめての複数タグ登録",
notes: "はじめてのタスク登録でタグを付与しています",
assignee:"me",
tags: ["あなたのタグGID1","あなたのタグGID2"] // タスクに付与するタグのIDリスト
}
};
const options = {
"method": "post",
"headers": {
"Authorization": "Bearer " + accessToken,
"Content-Type": "application/json"
},
"payload": JSON.stringify(payload),
"muteHttpExceptions": true // HTTP例外をミュートする(エラーレスポンスを取得するため)
};
try {
const response = UrlFetchApp.fetch(url, options);
const jsonResponse = JSON.parse(response.getContentText());
console.log(jsonResponse);
} catch (e) {
console.log("Exception when creating a task with tags: " + e.toString());
}
}
タスク内にタグが表示されていれば成功です。
リスト表示内に、タグ列が表示されていないばあいは、「非表示」をクリックして、タグの表示をONにします。
まとめ
以上で、「特定のプロジェクトやセクションにタスクを登録」をお送りしました。
次回は、いよいよ「スプレッドシートとAsana」をお届けします。お楽しみに。