GASでプロジェクト進捗を可視化!MultipleChoiceItem.setChoiceValuesでタスク管理を効率化
プロジェクト管理において、進捗状況の把握は非常に重要です。しかし、多くのプロジェクトでは、担当者への進捗確認や、進捗状況の集計に手間がかかり、リアルタイムな状況把握が難しいという課題があります。そこで、Google Apps Script(GAS)とMultipleChoiceItem.setChoiceValues
を活用することで、進捗状況の可視化とタスク管理の効率化を実現できます。
MultipleChoiceItem.setChoiceValuesとは
MultipleChoiceItem.setChoiceValues
は、Googleフォームの複数選択式質問項目(MultipleChoiceItem)の選択肢を設定するためのGASの関数です。この関数を使うことで、スプレッドシートなどの外部データに基づいて動的に選択肢を生成し、フォームの回答をリアルタイムに更新できます。
プロジェクト管理におけるMultipleChoiceItem.setChoiceValuesの実装
プロジェクト管理において、MultipleChoiceItem.setChoiceValues
は、タスクの進捗状況を回答させるフォームを作成し、その回答結果を集計・可視化するために利用できます。例えば、タスクごとに「未着手」「進行中」「完了」などの選択肢を用意し、担当者が進捗状況をフォームから回答することで、プロジェクト全体の進捗状況をリアルタイムに把握できます。
実装例1:タスクの進捗管理フォーム
以下のコードは、スプレッドシートに記載されたタスクリストに基づいて、進捗状況を回答するフォームを作成する例です。
function createProgressManagementForm() {
// スプレッドシートのIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "TaskList";
// フォームのタイトル
const formTitle = "タスク進捗管理フォーム";
// スプレッドシートからタスクリストを取得
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
const taskList = sheet.getDataRange().getValues();
// フォームを作成
const form = FormApp.create(formTitle);
// タスクごとの質問項目を作成
for (let i = 1; i < taskList.length; i++) { // 1行目はヘッダーのためスキップ
const taskName = taskList[i][0]; // タスク名
const choices = ["未着手", "進行中", "完了"]; // 選択肢
// 複数選択式質問項目を作成し、選択肢を設定
const item = form.addMultipleChoiceItem()
.setTitle(taskName)
.setChoiceValues(choices)
.setRequired(true);
}
// フォームの公開URLをログに出力
Logger.log(form.getPublishedUrl());
}
実装例2:回答に基づいて進捗状況を可視化
以下のコードは、フォームの回答に基づいて、タスクごとの進捗状況を集計し、スプレッドシートに可視化する例です。
function updateProgressStatus() {
// スプレッドシートのIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "ProgressData";
// フォームのID
const formId = "YOUR_FORM_ID";
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName(sheetName);
// フォームの回答を取得
const form = FormApp.openById(formId);
const responses = form.getResponses();
// 回答に基づいて進捗状況を集計
const progressData = {};
for (let i = 0; i < responses.length; i++) {
const response = responses[i];
const itemResponses = response.getItemResponses();
for (let j = 0; j < itemResponses.length; j++) {
const itemResponse = itemResponses[j];
const taskName = itemResponse.getItem().getTitle();
const answer = itemResponse.getResponse();
// 進捗状況を集計
if (!progressData[taskName]) {
progressData[taskName] = { "未着手": 0, "進行中": 0, "完了": 0 };
}
progressData[taskName][answer] = (progressData[taskName][answer] || 0) + 1;
}
}
// スプレッドシートに書き込み
let row = 2; // 2行目から書き込み(1行目はヘッダー)
for (const taskName in progressData) {
sheet.getRange(row, 1).setValue(taskName); // タスク名
sheet.getRange(row, 2).setValue(progressData[taskName]["未着手"] || 0); // 未着手
sheet.getRange(row, 3).setValue(progressData[taskName]["進行中"] || 0); // 進行中
sheet.getRange(row, 4).setValue(progressData[taskName]["完了"] || 0); // 完了
row++;
}
}
よくある問題とトラブルシューティング
- フォームの選択肢が更新されない: スプレッドシートのデータが変更されても、フォームの選択肢が自動的に更新されない場合があります。これは、GASのスクリプトがトリガーで定期的に実行されていないことが原因です。トリガーを設定して、定期的にスクリプトが実行されるように設定してください。
- 権限エラーが発生する: スプレッドシートやフォームへのアクセス権がない場合、GASのスクリプトがエラーで停止することがあります。スクリプトを実行するユーザーに、スプレッドシートとフォームへのアクセス権を付与してください。
カスタマイズ方法と応用例
- 条件付きで選択肢を変更する: タスクの種類や担当者に応じて、表示する選択肢を動的に変更することができます。
- 進捗状況に応じて通知を送る: タスクの進捗状況が変化した際に、担当者やプロジェクトマネージャーに自動的に通知を送ることができます。
- ガントチャートと連携する: スプレッドシートに記録された進捗状況を元に、ガントチャートを自動生成することができます。
まとめ
GASのMultipleChoiceItem.setChoiceValues
関数を活用することで、プロジェクト管理における進捗状況の可視化とタスク管理の効率化を実現できます。この記事で紹介したコード例を参考に、ぜひあなたのプロジェクトにGASを導入し、より効率的なプロジェクト管理を実現してください。
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう