見出し画像

Googleサイトで作るグループウェア(20)ー稟議・承認機能の追加②ー

この記事を読んで欲しい方

Googleワークスペースを企業DXに導入したが、上手く広げられていない方
Googleワークスペースを導入しようと考えてる中小企業の方
無料のGmailやクラウドアプリだけ使っているテレワーカー
GIGAスクールなどでGoogle for Eduを導入している学校

①稟議・承認機能の流れ

さて、今回から具体的に稟議・承認機能を作成していきます。
これは、稟議・承認の全体の流れです。

稟議・承認の全体の流れ

①申請者が、テンプレートを使って、稟議書を作成します。
②稟議書に内容を書き込み書類を完成させ、手動もしくはGAS(GoogleAppsScript)のプログラムを起動させて、ワークフロー保管庫フォルダに、稟議書を移動させます。
③ワークフロー保管庫フォルダに入った稟議書は、Googleドキュメントの「承認」で、承認者に向けて、「申請」を出します。その時に、申請者へは申請リクエストの状況、承認者へは承認待ち通知が、各Gメールに送信されます。
④承認者は、稟議書を見て、「承認」します。その時に、承認通知が、申請者のGメールに送信されます。承認された稟議書はロックが掛かり、変更ができなくなります。
⑤承認者は、申請が来ていないか、Gメールで確認できます。

②稟議書のテンプレートの作成

前回、お話したように、テンプレートはサテライトオフィス社様のサイトからダウンロードします。
サンプルとして使うのは、企画稟議書テンプレートです。
まず、企画稟議書テンプレートを開きます。

サテライトオフィスの企画稟議書テンプレート

次に、ファイル>コピーを作成で、指定したテンプレートフォルダに保存します。
最後に、書類の名前を「企画稟議書テンプレート(サテライトオフィス)」に変更しておいてください。

テンプレートへコピーを保存

③書類へのGAS(GoogleAppsScript)の貼り付け

企画稟議書テンプレートへ、GASプログラムを貼り付けます。
まず、拡張機能>Apps ScriptでApps Scriptエディタを開きます。

AppsScriptエディタを開く

AppsScriptエディタに、もともと入っている、function myFumction(){  } の部分は削除してから、プログラムをコピー&ペーストしてください。

次に、プログラムの中の「//移動先のフォルダIDを入れる」のコメントの前に"フォルダID"と書かれている部分がありますので、このフォルダID部分に実際の移動先のフォルダのIDを入れます。
フォルダIDは、移動先のワークフローフォルダを開いて、フォルダのURLを表示させ、 folders/ 以下 ?の前までの部分がフォルダIDになりますので、それをコピーして貼り付けます。

/** ファイルをワークフローフォルダへ移動させるプログラム */

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('【自動化】');
  menu.addItem('①実行許可', 'permission');
  menu.addItem('②稟議承認ワークフローへ移す', 'move_to_workflow_folder');
  menu.addToUi();
  /**Browser.msgBox('【自動化】メニューが起動しました。\\n「1.許可」を実行してプログラムの実行を許可してください。'); */
}

function permission() {
  Browser.msgBox('プログラムの実行は許可済みです。');
}

function move_to_workflow_folder() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ssId = ss.getId(); // スプレッドシートIDを取得
    const folder = moveFile("フォルダID", ssId); //移動先のフォルダIDを入れる
  Logger.log(folder);
  Browser.msgBox('ファイルが稟議承認ワークフローに移動しました。\\nファイルを再ロードしてください。');
}


/**
 * ファイルの移動
 * @param {String} 移動先のフォルダID
 * @param {String} 移動させるファイルID
 */
function moveFile(folderId, fileId) {

  // 移動させるファイルのDriveApp.Fileオブジェクトを取得
  const file = DriveApp.getFileById(fileId);

  // 指定したフォルダへファイルを追加
  DriveApp.getFolderById(folderId).addFile(file);

  // 移動元のファイルの親フォルダを取得
  const currentFolder = getCurrentFolder(file);

  // 移動元のファイルを削除
  currentFolder.removeFile(file);
}

/**
 * カレントフォルダを取得
 * @param {DriveApp.File} ファイル
 * @return {DriveApp.Folder} フォルダ
 */
function getCurrentFolder(file) {
  
  // 親フォルダを取得
  const parentFolder = file.getParents();

  // 取得したフォルダを返却
  return parentFolder.next();
}

貼り付けが終わったら、ファイルの名称を、ワークフローに変更して、フロッピーディスクのマーク(プロジェクトを保存)をクリックして、保存してください。保存が終わったら、AppsScriptエディタの画面を閉じてください。
これで、企画稟議書テンプレートの書類にプログラムが保存されました。
このプログラムは、書類を開くたびに、メニューのヘルプの右に【自動化】というメニューが追加表示されます。
これでテンプレート書類が完成しました。

【自動化】メニューの追加

④書類のテンプレートへの登録

出来上がった書類を、スプレッドシートのテンプレートへ追加します。
まず、テンプレートにアクセスします。
https://docs.google.com/spreadsheets/u/0/?tgif=d
テンプレートギャラリーをクリックして開きます。

テンプレートギャラリー

次にテンプレートを送信をクリックします。

テンプレートを送信をクリック

ダイアログが開くので、企画稟議書テンプレートを選択し、元のファルではなくコピーを送信にチェック、カテゴリにレポート&企画書を選び、送信ボタンを押します。

テンプレートをギャラリーに送信

これで、テンプレートギャリーに、企画稟議書テンプレートが登録されました。

企画稟議書テンプレートが登録された

今回は以上です。稟議・承認に使わない一般書類も、この要領でテンプレートに登録してください。
次回は、実際にプログラムがうまく動作するのか、確認してみましょう。(続く)


いいなと思ったら応援しよう!