
Googleフォームの回答をスプレッドシートに書き込むGASスクリプト
こんにちは!dotDでmeepaの開発を担当している前田です。
今回は「Googleフォームの回答をスプレッドシートに書き込むGASスクリプト」のソースコードを共有します!
スクリプトを書かなくとも、Googleフォームの設定で、スプレッドシートと連携させ、指定したスプレッドシートにフォームの回答を書き込むことは可能です。
Googleフォームとスプレッドシートの連携設定は簡単にできます。
ですが、以下のように、Googleフォームとスプレッドシートの連携設定はしないで、スプレッドシートに回答を書き込みたいケースもあります。
・フォームの回答を加工してスプレッドシートに書き込みたい
・フォームを送信した瞬間に、回答がスプレッドシートに書き込まれたくない
それでは、次のセクションから、使用するGoogleフォームとスプレッドシート・スクリプト・スクリプトの実行方法を見ていきましょう!
使用するGoogleフォームとスプレッドシート


スクリプトを書くところ

Googleフォーム管理画面右の縦の3点リーダーをクリックして、上記画像赤枠のスクリプトエディタをクリックします。
以下の画面が表示されるので、そこにソースコードを書きます。

使用するライブラリ
今回は「SpreadSheetSQL」というライブラリを使って、フォームの回答をスプレッドシートに直感的に書き込めるようにします。
以下の画像のように、画面左側の「ライブラリ +」から「SpreadSheetSQL」を追加します。
スクリプトID:17p1ghyOkbWOhdE4bdBFhOXL079I-yt5xd0LAi00Zs5N-bUzpQtN7iT1a
バージョン:11

スクリプト
function main(e) {
// フォームの回答を取得
const answer = e.response.getItemResponses();
// 回答編集ページのURLを取得
const editUrl = e.response.getEditResponseUrl();
// スプレッドシートに書き込むデータ
// プロパティ名はフォームのタイトル名と合わせてください
// お好みでタイムスタンプをつけたり、回答編集ページのURLをつけたりもできます
const data = {
タイムスタンプ: Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd HH:mm"),
あなたの好きな食べ物を教えてください: "",
性別: "",
編集用URL: editUrl
};
// 回答内容を取得
for (let i = 0; i < answer.length; i++) {
const title = answer[i].getItem().getTitle();
// 必要であれば、シートに書き込むデータを加工できます
data[title] = answer[i].getResponse();
}
// 回答内容を書き込むシートを指定
// SpreadSheetsSQL.open()の第1引数は「スプレッドシートID」、第2引数は回答内容を書き込みたい「シート名」です
const sheet = SpreadSheetsSQL.open("1ohjS-lzJmGKsQTHMCAxHp8g8St_Vw4WknUn6hfYahMk", "アンケート結果");
// 指定したシートに回答内容を書き込む
sheet.insertRows([data]);
}
上記のスクリプトを以下のように書き込みます。

Googleフォーム送信時に受け取れるイベントオブジェクトとメソッド一覧は以下のドキュメントから確認できます。
スクリプトの実行方法
Googleフォームが送信されたら、スクリプトが実行されるように設定をします。
画面左側の「🕓」アイコンをクリックして、以下のようにトリガーを設定して、保存します。
これで、Googleフォームの送信がトリガーとなって、書いたスクリプトが実行されるようになります。

フォームを送信する
ここまでくれば、Googleフォームのアンケートに答えたら、指定したスプレッドシートに回答内容が書き込まれるようになります!

上記のように回答して「送信」すると・・・

スプレッドシートに回答内容が書き込まれました!🎉
まとめ
今回は「Googleフォームの回答をスプレッドシートに書き込むGASスクリプト」のソースコードを共有しました!
業務のなかで、「Googleフォームとスプレッドシートの連携設定はしないで、スプレッドシートに回答を書き込みたい!」というニーズがあったため、GASスクリプトを作成しました。
同じニーズを持っている方は「きっといるはず、現れるはず」ということでこの記事を書きました!
最後に、dotDでは、新しい事業を共に作っていくためのエンジニアのメンバーを募集しています!
少しでも興味を持ってくださった方はお気軽にご連絡ください!!