スキルアップを始める!

【Google Apps Script(GAS)入門】自動化!Googleフォームの回答内容を他のスプレッドシートにも自動転記する方法|openById

GAS(GoogleAppsScript)
GAS(GoogleAppsScript)
この記事は約4分で読めます。

※記事中に広告情報を含みます。

スキルを手に入れた時、人は強くなれる。
Youtubeでスキルアップを始める 電子書籍でスキルアップを始める
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

Googleフォームから転記を自動化する

内容をまとめた本はこちら!▼

https://amzn.to/3jkdlCj

Googleフォームに回答があった時に、指定のGoogleスプレッドシートのシートにデータが送信されるように設定することができます。

フォームを送信したら、フォームまたは Google スプレッドシートで個別に回答を収集できます。

フォームの回答の保存先を選択する

  • Google フォームでフォームを開きます。
  • 左上の [回答] で、[概要] をクリックします。
  • 右上のその他アイコン その他次に [回答先を選択] をクリックします。
  • オプションを選択します。
  • 新しいスプレッドシートを作成: Google スプレッドシートで回答用のスプレッドシートを作成します。
  • 既存のスプレッドシートを選択: Google スプレッドシートで既存のスプレッドシートを選択して回答を保存します。
  • [作成] または [選択] をクリックします。
  • ヒント: 回答用のスプレッドシートには、Google スプレッドシートのホーム画面、Google スプレッドシート アプリ、Google ドライブからアクセスできます。
  • フォームを共有して回答を収集する>フォームの回答の保存先を選択する

これを、フォームの送信があって、Googleシートに入力された時に、他のGoogleシートに転記することは可能か…?というお話です。

自動化のイメージ

1.フォームの回答があった時は「フォームの回答1」というシートにデータが自動的に入る。
2.「フォームの回答1」というシートに自動的にデータが入った時に、別のスプレッドシートの「回答の転記」というシートの「末尾行」に自動的にデータが入力される。

というシンプルな仕組みでいきたいと思います。

Googleフォームで送信

まずはGoogleフォームで送信をしてみます。

送信があると、スプレッドシートの連結したシートに回答が入ります。

このタイミングと同時に、別のファイルへ転記をしてみます。

ということで、準備は終わったのでここからが本番です…!

https://amzn.to/3jkdlCj

スクリプトエディタ

[rml_read_more]

まずは、スクリプトエディタを開きます。

関数名を定義する

まずは「PostToAnotherFile()」などの名前で、関数を作ります。

ファイルを取得する

それぞれのファイルを取得します。

function PostToAnotherFile() {
//今のアクティブファイルを取得する
var ss1_copy = SpreadsheetApp.getActiveSpreadsheet()
//転記先のスプレッドシートIDを入力する
var ss2_copy_to = SpreadsheetApp.openById("XXXXX(ID)")

これで、フォーム回答ファイルと転記先のファイルが取得できます。

シートを取得

それぞれのシートを取得します。

// フォームの回答シート
var s_name_from = ss1_copy.getSheetByName('フォームの回答 1');
// 転記先のシート
var s_name_to = ss2_copy_to.getSheetByName('回答転記');

最終行+1行を取得

//最終行+1行
var lastRow_PlusOne = s_name_to.getLastRow() + 1

転記先のシートには最終行+1(空白行)への転記が必要ですので、+1しています。

転記元の最終行データを取得

var data = s_name_from.getRange(s_name_from.getLastRow(), 1,1, s_name_from.getLastColumn()).getValues();

getRangeで最終行のデータを取得します。

引数は(最終行(位置)、1列目(位置)、1行分(行数)、最終列(列数))

これで、最終行のデータが全てdata変数に格納されます。

setValueで書き込み

s_name_to.getRange(lastRow_PlusOne, 1,1,s_name_from.getLastColumn()).setValue(data);

getRangeで転記先の(最終行+1行に、1列目から、 1行分、 転記元の列数分)転記元の最終行のデータをsetValue()で書き込みます。

??なぜか、1列目のデータが行の全てのセルに転記されてしまいます。

dataの値はログを見る感じだと取れているので、setValue()に問題があるのかもしれません。

まとめ

長くなりそうでしたので、続きは別のページへ!!

Googleスプレッドシートを使えば色々と自動化ができます!

内容をまとめた本はこちら!▼

https://amzn.to/3jkdlCj

続きはこちら▼

ご参考下さい(^^)

URLをコピーしました!