GoogleのAppSheet[ノーコード アプリ開発]でプロジェクト管理ツールを構築してみた

2025.02.26 10:38 ブログ プロジェクト管理 ノーコード

GoogleのAppSheet[ノーコード アプリ開発]でプロジェクト管理ツールを構築してみたの画像

Omitでは、いくつかのプロジェクト管理ツールを使ってきましたが、もっとシンプルで社内の業務が簡素化できるプロジェクト管理ツールを探していました。

使ってた(検討していた)ツールとしては、Redmine、Asana、Jooto、Notion、Wrikeなどなどありますが
どれも人数が増えるとコストが増えたり、やりたいことが出来なかったり、スタッフ全員がわかりやすいものではなかったりと満足できるものが無い状態でした。
そこで、スクラッチで作ってしまおうかと思いましたが、いい機会なのでAppsheetを使ってノーコードで構築から運用までしてみましたので、ざっくりではございますがご紹介いたします。
 

Omitでプロジェクト管理ツールを検討する際の条件

  • シンプルである
  • 会社全体のプロジェクト状況がわかる画面と各個人が自身のタスクの状況を把握できる画面
  • GoogleDriveでプロジェクト用のデータや素材など管理しているので、連携してほしい(プロジェクト追加すると、指定の場所に複数フォルダが作成される)
  • RocketChatと連携したい(期限間近タスクの通知、プロジェクト追加時にRoomの作成)
  • プロジェクトの進行状況、個人の負荷状態がわかりやすい
  • 案件ごとメールをテンプレで送信できるように(打ち合わせのお礼等)
  • タスクやプロジェクトタイムラインがほしい
  • カスタマイズが容易
  • AIと連携させたい(プロジェクトの進行状況まとめの通知、タスク忘れ防止、クライアントへの連絡忘れ防止、様々なミスを未然に防げるように、更にDriveや議事録と連携させ案件に対する分析やアドバイスが自動出てくる仕組み)

上記の条件を考えると、かなり自由にカスタマイズできる必要があるため、OmitではGoogleスプレッドシートとAppSheetを使ってみるという選択になりました。

そこで、まだ条件を満たす物はできていませんが、プロジェクト管理ツールとして最低限使えるまで、行った事を手順に沿って解説します。
 

1.AppSheetって何?

AppSheet(アップシート)は、プログラミングの知識がなくても、誰でも簡単にアプリを作れるサービスです。Googleが提供しているツールで、「ノーコードアプリ作成ツール」**と呼ばれています

AppSheetの特徴を簡単に説明すると…

1. プログラミング不要!

→ コードを書かなくても、マウス操作や簡単な設定だけでアプリを作れます。

2. 表計算ソフトがそのままアプリに!

GoogleスプレッドシートExcelなどのデータを使ってアプリが作れます。例えば、スプレッドシートに「商品名」「価格」「在庫数」などを入力しておけば、それがそのまま在庫管理アプリになります。

3. スマホやパソコンで使える!

→ 作ったアプリはスマホやタブレット、パソコンから使えるので、現場でも事務所でも同じ情報が確認できます。

4. 業務効率化にピッタリ!

→ 営業管理、タスク管理、顧客管理、在庫管理など、会社の業務に合わせたオリジナルアプリが簡単に作れます。

2.とりあえずスプレッドシートの準備

こちらは単純にスプレッドシートを用意し各シートを準備します。
顧客マスタ、担当者マスタ、プロジェクト状況マスタ、プロジェクト、タスクと用意し各項目を準備します。

顧客マスタ
  • 顧客名
  • 会社名
  • 担当者
  • 電話番号
  • 主な連絡手段
  • 作成日
  • メールアドレス
  • メモ

担当者マスタ
  • 名前
  • Googleアカウント
  • rocketchatアカウント
  • メールアドレス

プロジェクト状況マスタ
  • プロジェクト状態

プロジェクト
  • プロジェクトID
  • プロジェクト名
  • 顧客名
  • 種類
  • 状態
  • 開始日
  • 納品日
  • 担当D
  • 概要
  • 見積もりURL
  • GoogleDrive
  • 参加者
  • ボタン用


タスクシート
  • タスクID
  • プロジェクトID
  • タスク名
  • 内容
  • ステータス
  • 担当者名
  • 担当アカウント
  • 予定工数/人日
  • 開始日
  • 終了日
  • プロジェクト名
  • 顧客名
  • 顧客名+プロジェクト名
  • 添付ファイル
 

3.AppSheetで各シート(テーブル)を構成

 Dataのプラスボタンからデータを追加します。

参照先としてGoogleスプレッドシートを選択し、先程作成したファイルを選択します。

その後、各シートをデータテーブルとしてDataへ読み込みます。  

全てのデータを取り込んだら次に
・各カラムの設定
・Viewの設定などを行い、プロジェクト管理を行いやすく見やすく調整します。
(工程が多い為割愛させていただきます)

 

4.プロジェクト作成時にGoogleDriveに自動フォルダ作成を行う。

AppsScriptの作成

まず、AppsScriptを「Googleドライブへプロジェクトフォルダ作成スクリプト」等としてGoogleDrive内に作成します。

作成できたら、コード.gsへ以下のスクリプトを設置(※あくまでの参考用です。自環境用に修正してください)
以下のコードでは、プロジェクトフォルダの構成が以下のようになります。

顧客名
├ プロジェクト名
 ├ ディレクション
 ├ データ
  ├ ソースコード
  ├ デザイン
function doPost(customerName, projectName, projectDate) {
    try {
        var parentFolderId = "〇〇〇〇〇〇〇〇〇〇〇〇"; // 親フォルダのIDを設定
        var newFolderId = createFolderByPath(parentFolderId, customerName, projectName, projectDate);

        return newFolderId;
    } catch (error) {
        Logger.log(error);
        return ContentService.createTextOutput(JSON.stringify({
            error: error.toString()
        })).setMimeType(ContentService.MimeType.JSON);
    }
}

function createFolderByPath(parentFolderId, customerName, projectName, projectDate) {
    var parentFolder = DriveApp.getFolderById(parentFolderId);
//顧客名フォルダを作成
    var customerFolders = parentFolder.getFoldersByName(customerName);
    if (customerFolders && customerFolders.hasNext()) {
        customerFolder = customerFolders.next();
    } else {
        customerFolder = parentFolder.createFolder(customerName);
    }
    Logger.log("customerFolder: " + customerFolder.getId());

    if (customerFolder && projectName && projectDate) {

        formattedDate = formatDate(projectDate);
// フォルダ名を作成 (例: "20250107_プロジェクト名")
        var folderName = formattedDate + "_" + projectName;
// 既存のフォルダがあるか確認
        var projectFolder = createCheckFolder(customerFolder, folderName);
// 必要なサブフォルダを作成
        createCheckFolder(projectFolder, "ディレクション");
        var dataFolder = createCheckFolder(projectFolder, "データ");
        createCheckFolder(dataFolder, "デザイン");
        createCheckFolder(dataFolder, "ソースコード");
        return projectFolder.getId(); // 最終フォルダのIDを返す
    }

    return customerFolder.getId(); // 最終フォルダのIDを返す
}

function createCheckFolder(parent, folderName) {
    var folders = parent.getFoldersByName(folderName);
    var targetFolder;
    if (folders.hasNext()) {
        targetFolder = folders.next(); // 既存フォルダを取得
    } else {
        targetFolder = parent.createFolder(folderName);
    }
    return targetFolder;
}

function formatDate(dateString) {
// 受け取った日付文字列を Date オブジェクトに変換
    var dateObj = new Date(dateString);
// 変換が失敗した場合のチェック
    if (isNaN(dateObj.getTime())) {
        return "Invalid Date"; // エラー処理
    }
// YYYYMMDD 形式に変換
    var year = dateObj.getFullYear();
    var month = ('0' + (dateObj.getMonth() + 1)).slice(-2); // 0埋め
    var day = ('0' + dateObj.getDate()).slice(-2); // 0埋め
    return year + month + day;
}

Automationの作成

次にAutomationに進み、Botsを作成します。
イベントはプロジェクトテーブルのデータ作成時にします。

次にタスクを作成し、「Call a script」に設定し、上記で作成したスクリプトを選択。

スクリプトへ渡す値も以下のように設定することで、プロジェクトを追加した際、自動でGoogleDriveへプロジェクト用のフォルダ構成を作成することができました。




以上で、シンプルなプロジェクト管理アプリの作成と、Apps scriptの連携でGoogleDriveへフォルダを自動作成まで行えるようになりました。

その他、調整やカスタマイズについては、また後日記事にできればと思います。




 

無料相談・お問い合わせ Web制作・システム開発に関する
ご相談はこちらよりご連絡ください。

お客様のビジネスの成長と成功を支えるパートナーとして、
どんなご相談でもお待ちしております。お気軽にお問い合わせください。