GASでプロジェクト管理を効率化!MultipleChoiceItem.setChoiceValuesで進捗管理をスマートに

GASでプロジェクト管理を効率化!MultipleChoiceItem.setChoiceValuesで進捗管理をスマートに

プロジェクト管理において、進捗状況の把握は非常に重要です。しかし、手動で進捗状況を更新したり、メンバーに個別に確認したりするのは手間がかかります。そこで、Google Apps Script(GAS)のMultipleChoiceItem.setChoiceValuesを活用することで、進捗管理を大幅に効率化できます。本記事では、MultipleChoiceItem.setChoiceValuesの基本的な使い方から、プロジェクト管理における具体的な実装例、よくある問題とその解決策、カスタマイズ方法まで詳しく解説します。

MultipleChoiceItem.setChoiceValuesとは?

MultipleChoiceItem.setChoiceValuesは、Googleフォームの複数選択式(ラジオボタン)の選択肢を設定するためのGASの関数です。この関数を使うことで、フォームの選択肢を動的に変更できます。たとえば、プロジェクトのタスクリストをフォームの選択肢として表示し、タスクの完了状況に応じて選択肢を更新するといったことが可能です。

基本的な使い方

MultipleChoiceItem.setChoiceValuesは、MultipleChoiceItemオブジェクトに対して使用します。MultipleChoiceItemオブジェクトは、フォームのアイテムとして複数選択式の質問項目を作成した際に生成されます。以下は基本的な使い方です。

// フォームを取得
const form = FormApp.openById("フォームID");

// 質問項目を取得(複数選択式であること)
const item = form.getItemById("質問項目ID").asMultipleChoiceItem();

// 選択肢を設定
item.setChoiceValues(["選択肢1", "選択肢2", "選択肢3"]);

プロジェクト管理における実装方法

プロジェクト管理では、タスクの進捗状況をリアルタイムに把握することが重要です。MultipleChoiceItem.setChoiceValuesを使うことで、タスクの進捗状況をフォームの選択肢として表示し、メンバーが簡単に更新できるようにします。以下は、具体的な実装例です。

進捗管理フォームの作成

まず、Googleフォームで進捗管理用のフォームを作成します。フォームには、以下の項目を含めます。

  • タスク名(複数選択式)
  • 担当者(テキスト)
  • 完了日(日付)

「タスク名」の項目は、複数選択式にします。この項目の選択肢を、GASで動的に更新します。

GASによる実装

以下のGASコードは、スプレッドシートに登録されたタスクリストを読み込み、フォームの選択肢として設定します。また、タスクの完了状況に応じて、選択肢を更新します。

// スプレッドシートのIDとシート名
const SPREADSHEET_ID = "スプレッドシートID";
const SHEET_NAME = "タスクリスト";

// フォームのIDと質問項目のID
const FORM_ID = "フォームID";
const TASK_ITEM_ID = "質問項目ID";

function updateTaskList() {
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);

// タスクリストのデータを取得(A列:タスク名、B列:完了フラグ)
const data = sheet.getDataRange().getValues();

// ヘッダー行をスキップ
data.shift();

// フォームを開く
const form = FormApp.openById(FORM_ID);

// タスク名の質問項目を取得
const taskItem = form.getItemById(TASK_ITEM_ID).asMultipleChoiceItem();

// 選択肢の配列を作成
const taskList = [];
for (let i = 0; i < data.length; i++) {
const taskName = data[i][0];
const completed = data[i][1];

// 完了済みのタスクは選択肢に含めない
if (!completed) {
taskList.push(taskName);
}
}

// 選択肢を設定
taskItem.setChoiceValues(taskList);
}

コードの説明

  • SPREADSHEET_IDSHEET_NAMEFORM_IDTASK_ITEM_IDは、それぞれスプレッドシートのID、シート名、フォームのID、タスク名の質問項目のIDに置き換えてください。
  • updateTaskList()関数は、スプレッドシートからタスクリストを読み込み、完了済みのタスクを除外して、フォームの選択肢を更新します。
  • スプレッドシートのA列にタスク名、B列に完了フラグ(TRUE/FALSE)を入力します。

実用的なコード例

以下のコードは、タスクが完了した際に、スプレッドシートの完了フラグを自動的に更新するトリガーを設定します。

function onSubmit(e) {
// フォームの回答を取得
const responses = e.response.getItemResponses();

// タスク名の回答を取得
const taskName = responses[0].getResponse();

// スプレッドシートを開く
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);

// タスクリストのデータを取得
const data = sheet.getDataRange().getValues();
data.shift();

// タスク名を検索し、完了フラグをTRUEに設定
for (let i = 0; i < data.length; i++) {
if (data[i][0] === taskName) {
sheet.getRange(i + 2, 2).setValue(true);
break;
}
}

// タスクリストを更新
updateTaskList();
}

コードの説明

  • onSubmit(e)関数は、フォームが送信された際に実行されるトリガー関数です。
  • フォームの回答からタスク名を取得し、スプレッドシートの該当するタスクの完了フラグをTRUEに設定します。
  • updateTaskList()関数を呼び出して、フォームの選択肢を更新します。

トリガーの設定

onSubmit(e)関数をトリガーとして設定するには、GASエディタで「編集」→「現在のプロジェクトのトリガー」を選択し、「トリガーを追加」をクリックします。以下の設定でトリガーを作成します。

  • 実行する関数: onSubmit
  • イベントのソース: フォームから
  • イベントの種類: フォーム送信時

よくある問題とトラブルシューティング

選択肢が更新されない

選択肢が更新されない場合は、以下の点を確認してください。

  • スプレッドシートのID、シート名、フォームのID、タスク名の質問項目のIDが正しいか。
  • GASコードにエラーがないか。
  • トリガーが正しく設定されているか。

エラーメッセージが表示される

エラーメッセージが表示される場合は、エラーメッセージの内容を確認し、原因を特定してください。よくあるエラーとしては、以下のものがあります。

  • TypeError: Cannot read property 'asMultipleChoiceItem' of null:質問項目のIDが間違っているか、質問項目が複数選択式ではない可能性があります。
  • Exception: The script does not have permission to use the service.:必要な権限が付与されていない可能性があります。GASエディタで権限を確認し、必要な権限を付与してください。

カスタマイズ方法と応用例

担当者別のタスク管理

担当者別にタスクを管理する場合は、スプレッドシートに担当者列を追加し、GASコードで担当者ごとにタスクリストをフィルタリングします。

期限切れタスクの通知

期限切れのタスクがある場合に、担当者にメールで通知する機能を追加することもできます。GASのMailAppサービスを使用することで、簡単にメールを送信できます。

ガントチャートの作成

Googleスプレッドシートの機能とGASを組み合わせることで、ガントチャートを自動的に作成することも可能です。タスクの開始日、終了日、進捗状況をスプレッドシートに入力し、GASでガントチャートを生成します。

まとめ

MultipleChoiceItem.setChoiceValuesを活用することで、プロジェクト管理における進捗管理を大幅に効率化できます。本記事で紹介した実装例やカスタマイズ方法を参考に、ぜひご自身のプロジェクト管理に取り入れてみてください。GASを使いこなして、プロジェクト管理をスマートに実現しましょう。

PR

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。

CodeCampで理想の働き方を実現しよう