[Googleスプレッドシート]GoogleスプレッドシートのGASを使って効率的に議事録を自動作成しよう!

Windows11
ホーム » Windows11 » [Googleスプレッドシート]GoogleスプレッドシートのGASを使って効率的に議事録を自動作成しよう!

■対象者

スプレッドシートで議事録を作成している方

毎回作成している議事録を部分的に自動化したい方

毎週作成するのが面倒な方

議事録作成はビジネスやチーム活動において重要なタスクですが、手作業で作成すると時間と手間がかかります。そこで、GoogleスプレッドシートのGAS(Google Apps Script)を活用すれば、議事録の自動作成が可能です。今回は、GoogleスプレッドシートのGASを使った議事録自動作成の方法をご紹介します。

※「GAS」とは、「Google Apps Script」の略称です。

GASの設定と準備
まずはGoogleスプレッドシートを開き、メニューバーから「ツール」→「スクリプトエディタ」を選択します。そこでGASのコードを作成する準備をします。

実際のコード

function copySheet(){  
const ss = SpreadsheetApp.getActiveSpreadsheet();  
const sheet = ss.getSheets()[2];  
const sheetname = sheet.getSheetName();  
const date = Moment.moment(sheetname);  
const azyenda = date.add(7,"days");  
const formattedDate = azyenda.format("YYYY/MM/DD");
sheet.copyTo(ss); //最新のアジェンダをコピー
const numSheets = ss.getNumSheets();  
const newsheet = ss.getSheets()[numSheets-1];    
newsheet.activate();  newsheet.setName(formattedDate);
ss.setActiveSheet(newsheet);  ss.moveActiveSheet(3);//シートを移動  }

function ajenda() {  
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();  
var sheets = spreadsheet.getSheets();  
var thirdSheetName = sheets[2].getName(); // 左から三番目のシート名  var fourthSheetName = sheets[3].getName(); // 左から四番目のシート名  
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(fourthSheetName);  
var destinationSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(thirdSheetName);
  // 元のシートのB列の値が「2. アジェンダ」の一つ下から「3. 次回の行動」の一つ上までの範囲で列A~Qをコピーする  
var agendaValue = '2. アジェンダ';  
var nextActionValue = '3. 次回の行動';  
var startRow = -1;  
var endRow = -1;  
var lastRow = sourceSheet.getLastRow();
// 元のシートを走査して範囲を特定する  
for (var i = 2; i <= lastRow; i++) {var value = sourceSheet.getRange('B' + i).getValue();    
if (value === agendaValue) {startRow = i + 1; 
// 「2. アジェンダ」の一つ下の行を開始行とする    } else if (value === nextActionValue) 
{endRow = i - 1; // 「3. 次回の行動」の一つ上の行を終了行とする      
break;    }  }
// コピー元の範囲を指定して値をコピーする  
if (startRow > 0 && endRow > 0) {    var sourceRange = sourceSheet.getRange('A' + startRow + ':Q' + endRow);    
var copiedValues = sourceRange.getValues();
// コピー先のシートの11行目以下を削除する    
var destinationLastRow = destinationSheet.getLastRow();    
if (destinationLastRow >= 11) {destinationSheet.deleteRows(11, destinationLastRow - 10);}
// コピーした値を張り付ける  
var pasteRange = destinationSheet.getRange(11, 1, copiedValues.length, copiedValues[0].length);  
pasteRange.setValues(copiedValues);  }
// C列の一番下の値の行+1行のB列に「2. アジェンダ」を記入する  
var lastValueRow = pasteRange.getLastRow();
var lastValueCol = 3; // 
C列の列番号  var agendaCell = destinationSheet.getRange(lastValueRow, 2);
 // B列のセル  agendaCell.setValue(agendaValue);
// 「2. アジェンダ」と記入した行の下に10行追加する  
var agendaRow = lastValueRow + 1;  var numRowsToAdd = 10;  
var newagendaRow = lastValueRow  // 10行追加するための空のデータ行を作成  
var emptyRows = [];  for (var i = 0; i < numRowsToAdd; i++) {    var emptyRow = [];    for (var j = 0; j < 3; j++) {      emptyRow.push("");    }    emptyRows.push(emptyRow);  }
  // 10行追加  destinationSheet.getRange(agendaRow + 1, 1, numRowsToAdd, 3).setValues(emptyRows);

  // 追加した行に「3.次回の行動」を出力する  
var nextActionRange = destinationSheet.getRange(agendaRow + 8, 2, 1, 1);  nextActionRange.setValue(nextActionValue);  // 追加した行の一つ下の各列に値を記入する  var newRow = agendaRow + 9;
var dateValue = "日付";
var departmentValue = "部署名";
var responsibleValue = "担当";
var titleValue = "タイトル";
var nextReportDateValue = "次回報告日";
var deadlineValue = "デッドライン";
var nextActionRow = agendaRow + 8;
destinationSheet.getRange(newRow, 3).setValue(dateValue); // C列に日付を記入  destinationSheet.getRange(newRow, 4).setValue(departmentValue); // D列に部署名を記入  destinationSheet.getRange(newRow, 5).setValue(responsibleValue); // E列に担当を記入  destinationSheet.getRange(newRow, 6).setValue(titleValue); // F列にタイトルを記入  destinationSheet.getRange(newRow, 13).setValue(nextReportDateValue); // M列に次回報告日を記入  destinationSheet.getRange(newRow, 16).setValue(deadlineValue); // P列にデッドラインを記入
// 10行目の色を取得  
var range10 = destinationSheet.getRange('A10');  
var color10 = range10.getBackground();
// 2. アジェンダの行に色を設定  
var agendaRange = destinationSheet.getRange('A' + newagendaRow + ':P' + newagendaRow); // 列AからPまでの範囲  
agendaRange.setBackground(color10);
// 3. ネクストアクションの行に色を設定  
var nextActionRange = destinationSheet.getRange('A' + nextActionRow + ':P' + nextActionRow); // 列AからPまでの範囲  nextActionRange.setBackground(color10);}

上記のGASで出来ること

・使用イメージとしては、スプレッドシートの一番左のシートにコピーしたい
 原本のスプレッドシートがありそれをコピーして左から三番目に新しいシートを作成する。

・前回の議事録と同じ内容が左から3番目のシートに作成されている状態です。
 そのシートの上から10行目までは固定して、それより下の内容をコピーしている状態です。

・前回のアジェンダは「2.アジェンダ」という行以下の値になるので
 それをコピーして上部に移動、新しく今週の議題を入力できる形にする。

・これをトリガーで定例がある日の夜に設定していれば、毎回作成する手間が省けます。

最後に

意外と毎週議事録+次回分を作成するとなると手間なので、上記を組み込むことで楽になります。

タイトルとURLをコピーしました