1
/
5

Googleフォームの回答をスプレッドシートに書き込むGASスクリプト

こんにちは!dotDでmeepaの開発を担当している前田です。

meepa | 子どもの本当の好きに出会う 課外活動マッチングサービス
meepaは「子どもの本当の好きに出会う」を目指して、幼稚園・保育園・学童などで子どもたちが様々な体験の機会を得られるように、園と課外活動提供者をマッチングするサービスです。
https://meepa.io/

今回は「Googleフォームの回答をスプレッドシートに書き込むGASスクリプト」のソースコードを共有します!

スクリプトを書かなくとも、Googleフォームの設定で、スプレッドシートと連携させ、指定したスプレッドシートにフォームの回答を書き込むことは可能です。
Googleフォームとスプレッドシートの連携設定は簡単にできます。

ですが、以下のように、Googleフォームとスプレッドシートの連携設定はしないで、スプレッドシートに回答を書き込みたいケースもあります。

それでは、次のセクションから、使用するGoogleフォームとスプレッドシート・スクリプト・スクリプトの実行方法を見ていきましょう!

▼目次

  • 使用するGoogleフォームとスプレッドシート
  • スクリプトを書くところ
  • 使用するライブラリ
  • スクリプト
  • スクリプトの実行方法
  • フォームを送信する
  • まとめ

使用するGoogleフォームとスプレッドシート

                     Googleフォーム

                     スプレッドシート


スクリプトを書くところ

Googleフォーム管理画面右の縦の3点リーダーをクリックして、上記画像赤枠のスクリプトエディタをクリックします。

以下の画面が表示されるので、そこにソースコードを書きます。

使用するライブラリ

今回は「SpreadSheetSQL」というライブラリを使って、フォームの回答をスプレッドシートに直感的に書き込めるようにします。

GoogleAppsScriptでSQLライクにスプレッドシートを扱えるライブラリを作りました。 - Qiita
SpreadSheetSQL========================================現在既にこのライブラリはメンテナンスしていません。Apache License 2....
https://qiita.com/roana0229/items/fea931fcabc57f193620

以下の画像のように、画面左側の「ライブラリ +」から「SpreadSheetSQL」を追加します。

スクリプト

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]);
}
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フォーム送信時に受け取れるイベントオブジェクトとメソッド一覧は以下のドキュメントから確認できます。

イベント オブジェクト | Apps Script | Google for Developers
シンプルなトリガーと インストール可能なトリガーにより、Apps Script では特定のイベントが発生したときに関数を自動的に実行できます。トリガーが起動すると、Apps Script は関数にイベント オブジェクトを引数として渡します(通常は e と呼ばれます)。イベント オブジェクトには、トリガーを起動したコンテキストに関する情報が含まれています。たとえば、以下のサンプルコードは、イベント オブジェクトを使用して編集されたセルを特定する Google スプレッドシート スクリプト用のシンプルな on
https://developers.google.com/apps-script/guides/triggers/events?hl=ja#form-submit_1

スクリプトの実行方法

Googleフォームが送信されたら、スクリプトが実行されるように設定をします。

画面左側の「🕓」アイコンをクリックして、以下のようにトリガーを設定して、保存します。
これで、Googleフォームの送信がトリガーとなって、書いたスクリプトが実行されるようになります。

フォームを送信する

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

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

スプレッドシートに回答内容が書き込まれました!🎉

まとめ

今回は「Googleフォームの回答をスプレッドシートに書き込むGASスクリプト」のソースコードを共有しました!

業務のなかで、「Googleフォームとスプレッドシートの連携設定はしないで、スプレッドシートに回答を書き込みたい!」というニーズがあったため、GASスクリプトを作成しました。
同じニーズを持っている方は「きっといるはず、現れるはず」ということでこの記事を書きました!

最後に、dotDでは、新しい事業を共に作っていくためのエンジニアのメンバーを募集しています!
少しでも興味を持ってくださった方はお気軽にご連絡ください!!


株式会社dotD | 事業創造ファーム
dotDはB2B,B2Cに関わらずのデジタルを活用した事業を連続的、非連続的に作り出すことによって社会の基盤になることを目指している「事業創造ファーム」です。
https://dotd-inc.com/





Invitation from 株式会社dotD
If this story triggered your interest, have a chat with the team?
株式会社dotD's job postings
2 Likes
2 Likes

Weekly ranking

Show other rankings
Like funabashi yukiko's Story
Let funabashi yukiko's company know you're interested in their content