【Laravel】AsanaAPIでタスク管理
はじめに
今回はLaravelとAsanaAPIを使って、Asanaのプロジェクト内のタスクを管理(取得、作成、削除)する方法を紹介します。
なお本記事ではAsanaAPIの機能紹介をメインとするため、エラーハンドリングなどは実装していませんのでご注意ください。
バージョン情報
Asana側でアクセストークンは取得済みであることを前提に進めます。
もしトークンの取得方法などAPI関連で不明点があればこちらをご参照ください。
https://help.asana.com/hc/ja/articles/14243870406939-API
公式のAPIリファレンスはこちらです。
php-asana インストール
PHPでAsanaAPIを使うライブラリをインストールします。
https://github.com/Asana/php-asana
composer require asana/asana
GIDについて
AsanaAPIを使うにあたってパラメータでGIDを指定する必要があるので見方を説明します。
プロジェクトのGIDはAsana(Webブラウザ版)で対象のプロジェクトを開いた時のURL、
https://app.asana.com/0/123…..456/135…..791の123……456の部分です。
タスクのGIDは対象のタスクを開いた時のURL、
https://app.asana.com/0/123…..456/246…..810の246…..810の部分です。
Asanaクライアント初期化
$client = \Asana\Client::accessToken('PERSONAL_ACCESS_TOKEN');
まずはアクセストークンを使用してAsanaクライアントを初期化します。
PERSONAL_ACCESS_TOKENには取得済みのアクセストークンを入れてください。
特定の機能を有効にする際に、第2引数でheadersを指定する場合もあります。
$client = \Asana\Client::accessToken(
'PERSONAL_ACCESS_TOKEN',
[
'headers' => [
'asana-enable' => 'new_user_task_lists,new_goal_memberships',
],
]);
タスク取得
https://developers.asana.com/reference/gettask
特定のタスクを1件取得してみます。
$task = $client->tasks->getTask($task_gid);
https://developers.asana.com/reference/gettasksforproject
プロジェクト内のタスクを一覧で取得しる場合は以下の通りです。
$result = $client->tasks->getTasksForProject($project_gid);
タスク作成
プロジェクトにタスクを新規で作成してみます。
今回はタスク名、期日、タスク本文を設定します。
$body = "<body>note test";
$body .= "\n";
$body .= "break line";
$body .= "</body>";
$params = array(
'name' => 'タスクテスト',
'due_on' => '2024-05-01',
'html_notes' => $body,
);
// プロジェクト指定
$params['projects'][] = $project_gid;
$result = $client->tasks->createTask($params);
改行について
html_notes内で改行させようとbrタグを使用するとエラーが出てしまう可能性があるので、”\n”を使用しています。
タスク削除
タスクを削除するには以下の通りです。
$result = $client->tasks->deleteTask($task_gid);
まとめ
以上、PHPからAsanaのAPIを使用してみました。
Asanaはアプリ自体のUI/UXも良くAPIのリファレンスが充実していて分かりやすいので、タスク管理やカレンダー系の機能で連携が必要な際は候補にしやすいのではないでしょうか。
この記事が参考になれば幸いです!
✙
プラスジャムはWeb制作会社です。
ウェブサイト制作、システム開発、Webマーケティングなど、さまざまな課題解決やアイデアを具現化するWebソリューションを提案・提供しています。
noteでプラスジャムを見つけてくださった方は、お時間あればコーポレートサイトや他の記事もご覧いただければ幸いです。
\コーポレートサイトはこちら/
\関連記事はこちら/