0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ボランティア参加者の記録をGASで簡単にできるようにした

Posted at

概要

 私のサークルではボランティアの参加者の様子や行った支援を活動毎に記録しています。記録はGoogleスプレッドシートに各自で行っていますが、スマートフォンからグGoogleスプレッドシートを編集するのは困難なものです。そこで、GoogleフォームとGoogleスプレッドシートを連携させGoogleフォームに回答するだけで参加者の記録がスプレッドーシート内にシートごとに分けて追記するシステムを作成しました。
 文章後半では紹介したスプレッドシートと、フォームを編集し自分が使いやすい項目にする方法について説明します。

機能

1.Googleフォームで当日の記録を回答することでスプレッドシートに記録することができる。
2.回答を参加者ごとに分けてシートに追加する。
3.参加者名がシートになければテンプレートを複製して新しい参加者のシートを作成する。

作成

①記録テンプレートの作成

image.png
上記のようなシートをテンプレートとして作成しました。

②回答フォームの作成

screencapture-docs-google-forms-d-e-1FAIpQLSc3SRbHZ28MLo0uyCvtWx8-x-fSkJn8NQoCFu57jfBqflEzBA-viewform-2022-04-02-11_24_31.png
上記のように回答フォームを作成しました。

③転記スクリプトの作成

//フォームに回答が来たときに動くスクリプト
function setLastChildInformation(){
  //シート全体を取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  //シート全体をオブジェクトで取得
  var FullSheets = sheet.getSheets();
  //テンプレを取得
  var copySheet = sheet.getSheetByName("テンプレ (変更後) ");
  //回答データを取得
  var answerSheet = sheet.getSheetByName('フォームの回答1');
  //最終行の行数,最終列の列数を取得
  var lastRow = answerSheet.getLastRow();
  var lastColumn = answerSheet.getLastColumn();
  //回答されたデータを取得
  var childInformation = answerSheet.getSheetValues(lastRow,1,lastRow,lastColumn);

  //すべてのシートに対して探索
  for(i = 0;i < FullSheets.length;i++){
    var targetSheet = FullSheets[i]; 
    var sheetName = targetSheet.getSheetName();

    //シートに名前を追加
    if(sheetName == childInformation[0][1]){
      targetSheet.appendRow(childInformation[0].slice(2,10));
      findChildName = true;
      break;
    }
    //シートがない場合に新しい人を追加
    if(i == FullSheets.length-1){
      let newSheet = copySheet.copyTo(sheet);
      newSheet.setName(childInformation[0][1]);
      newSheet.getRange("A1").setValue(childInformation[0][1]);
      newSheet.getRange("C2").setValue(childInformation[0][3]);
      newSheet.appendRow(childInformation[0].slice(2,10));
      FullSheets.push(newSheet);
      break;
    }
  }
}

動作確認

コピーして利用する方法

①スプレッドシートをコピーする

 以下にアクセスしてご自身のgoogleドライブに共有用のスプレッドシートをダウンロードしてください。
   ここからコピーを作成
 ※必要があればここでマイドライブに作成したファイルを移動してください。

②トリガーを設定する

image.png
拡張機能>Apps Scriptを選択

image.png
左記メニューからトリガーを選択

image.png
新しいトリガーを作成しますをクリック

image.png
イベントの種類を選択をフォーム送信時に変更して保存
※警告が表示された際は、詳細設定を押して先に進んでください


以上でフォームの制作は完了です。
お読みいただきありがとうございました。

 

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?