エグウェブ.JP@福岡/WEBセミナー・分析・WEBサイト制作

福岡でWEB分析・ホームページ・WEBサイト作成・WordPress、Googleアナリティクス、LINEスタンプ、Photshop・illustrator、Excelの講座やセミナーを開催

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

time 2019/08/26

Googleフォーム

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

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

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

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

フォームを共有して回答を収集する>フォームの回答の保存先を選択する

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

自動化のイメージ

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

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

Googleフォームで送信

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

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

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

スクリプトエディタ

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

関数名を定義

まずは、
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スプレッドシートを使えば色々と自動化ができます!
ご参考下さい\(^o^)/

download

プロフィール

EGUWEB

EGUWEB

【皆さまの人生に最良のファーストステップを】WEBサイトを作りたい!WEB分析を学びたいけど分からない。とりあえず色々と知りたい!皆様の悩みを解決できるように頑張ります。 [詳細]

カテゴリー