見出し画像

GoogleMeetの録画ファイルをマイドライブ以外に保管させる(+おまけ)

Google Workspace(旧称 G Suite)を契約している会社ではZoomやTeamsを使わずにGoogleMeetを使用している会社もあるかと思います。
弊社も一部zoom/teamsを使用していますがメインはMeetを利用しており(週次、月次)定例会議を録画して全体に共有しています。

ただしMeetの録画には以下問題があります。

- 保存先
  フォルダ指定不可(ホストのマイドライブに保存される)

- ファイル名
 自動付与される時間が太平洋標準時になってしまう。
  命名ルール: 会議名 (yyyy-mm-dd at( hh:mm GMT-7)

今回メンバーからこれらの問題解決と周知も自動化したいとの要望を受けたのでSlack通知も行えるGASを作ってみました。

1.スプレットシート作成

新規作成からスプレットシートを作ります
 ①スプレットシート新規作成(ファイル名任意)
 ②以下の通り内容記入

  A列:会議のタイトル(カレンダーで予約している会議名)
  B列:移動先フォルダURL (移動先のURLを記入)
  C列:Slack通知(チェックボックスを記入、通知時はチェックON)
  D列:チャンネル名(通知したいSlackチャンネル名)
  E列:空白
  F列:GoogleMeet保存先(デフォルトで保存されるマイドライブのURL) 

画像1

2.Slackにアプリ追加

Webhookを使ってSlackに通知させます。
①以下のURLクリック
 https://my.slack.com/services/new/incoming-webhook/
②投稿チャンネルは適当に選択※
 ※GASでオプション指定すればどのチャンネルでも通知出来るため
③「IncomingWebhook Integrationの追加」クリック
④Webhook URLをコピーして控えておく

3.GAS作成

以下参考にGASを作成してWebhookURLを貼り付ける

function move(){
//現在開いている、スプレッドシートのシートを取得
 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
 var sh = spreadsheet.getActiveSheet();

//A列から空白要素を除いた行数を取得
 var FValues = sh.getRange('A:A').getValues();  
 var lastRow = FValues.filter(String).length;

//GoogleドライブのURLが環境によって2つに分かれるため変数化
 var DriveURL1 = "https://drive.google.com/drive/folders/"
 var DriveURL2 = "https://drive.google.com/drive/u/0/folders/"

//移動元フォルダURL
 var mydrive = sh.getRange(2, 6).getValue(); 

//移動元フォルダ情報を取得
 if(mydrive.indexOf(DriveURL1) === 0){
    var origin_folderId = mydrive.replace(DriveURL1, "");
   }else{
   var origin_folderId = mydrive.replace(DriveURL2, "");
 }

//設定された内容を1行ごとに処理する
 for(var i = 2; i <= lastRow; i++) {

 //ファイル一覧取得
   var origin_folder = DriveApp.getFolderById(origin_folderId);
   var LIST = origin_folder.getFiles();

 //実行対象のタイトルと保存先をシートから取得
   var tittle = sh.getRange(i, 1).getValue();      //会議のタイトル
   var destination = sh.getRange(i, 2).getValue(); //移動先フォルダ
   var slackflag = sh.getRange(i, 3).getValue();   //Slack通知判定
   var slackch = sh.getRange(i, 4).getValue();     //通知チャンネル    


 //ファイル名を比較(前方一致)して対象の場合はファイル名をJSTに直した上で移動させる
   while (LIST.hasNext()) {
     var file = LIST.next();
     if(file.getName().indexOf(tittle) === 0){  //前方一致した場合
       //ファイル名を分割
       var splitText= (String(file)).split('(');

       //作成日を抽出
         var lastUpdated = file.getLastUpdated();
         var Dateformat = Utilities.formatDate(lastUpdated, '"GMT+9"', 'yyyy-MM-dd') //日付フォーマット変更

       //ファイル名変更
         var fileid = file.getId()
         var getFileid = DriveApp.getFileById(fileid);
         getFileid.setName(splitText[0] + "(" + Dateformat + ")") 

       //GoogleドライブのURLが2種類あるため分岐処理
         if(mydrive.indexOf(DriveURL1) === 0){
         var destination_folderId = destination.replace(DriveURL1, "");
         }else{
         var destination_folderId = destination.replace(DriveURL2, "");
         }

       //ファイルを移動
         var destination_folder = DriveApp.getFolderById(destination_folderId);
         getFileid.moveTo(destination_folder);
         Logger.log('ファイル名「' + splitText[0] + "(" + Dateformat + ")" + '」を移動しました')

       //Slack通知
       if(slackflag == true){ //通知する場合
           var options =
           {
             "method" : "post",
             "contentType" : "application/json",
             "payload" : JSON.stringify
               (
                 {
                   "username":"録画データ通知BOT",
                   "channel": slackch,
                   "text":'録画ファイル「' + splitText[0] + "(" + Dateformat + ")" + '」を保存しました' + destination,
                   "link_names": 1
                 }
               )
            };
           //Slack投稿
             UrlFetchApp.fetch("https:〜〜〜〜", options);
       }      
     }
   }
 }
}


4.動作確認

うまく動けばファイルの移動&時間をJSTに変更&Slack通知がされるはずです。あと毎回自動で移動させたければGASのタイマーセットして下さい。

画像2


この記事が気に入ったらサポートをしてみませんか?