meepa | 子どもの本当の好きに出会う 課外活動マッチングサービス
meepaは「子どもの本当の好きに出会う」を目指して、幼稚園・保育園・学童などで子どもたちが様々な体験の機会を得られるように、園と課外活動提供者をマッチングするサービスです。
https://meepa.io/
こんにちは!dotDでmeepaの開発を担当している前田です。
今回は「Googleフォームの回答をスプレッドシートに書き込むGASスクリプト」のソースコードを共有します!
スクリプトを書かなくとも、Googleフォームの設定で、スプレッドシートと連携させ、指定したスプレッドシートにフォームの回答を書き込むことは可能です。
Googleフォームとスプレッドシートの連携設定は簡単にできます。
ですが、以下のように、Googleフォームとスプレッドシートの連携設定はしないで、スプレッドシートに回答を書き込みたいケースもあります。
それでは、次のセクションから、使用するGoogleフォームとスプレッドシート・スクリプト・スクリプトの実行方法を見ていきましょう!
Googleフォーム
スプレッドシート
Googleフォーム管理画面右の縦の3点リーダーをクリックして、上記画像赤枠のスクリプトエディタをクリックします。
以下の画面が表示されるので、そこにソースコードを書きます。
今回は「SpreadSheetSQL」というライブラリを使って、フォームの回答をスプレッドシートに直感的に書き込めるようにします。
以下の画像のように、画面左側の「ライブラリ +」から「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フォーム送信時に受け取れるイベントオブジェクトとメソッド一覧は以下のドキュメントから確認できます。
Googleフォームが送信されたら、スクリプトが実行されるように設定をします。
画面左側の「🕓」アイコンをクリックして、以下のようにトリガーを設定して、保存します。
これで、Googleフォームの送信がトリガーとなって、書いたスクリプトが実行されるようになります。
ここまでくれば、Googleフォームのアンケートに答えたら、指定したスプレッドシートに回答内容が書き込まれるようになります!
上記のように回答して「送信」すると・・・
スプレッドシートに回答内容が書き込まれました!🎉
今回は「Googleフォームの回答をスプレッドシートに書き込むGASスクリプト」のソースコードを共有しました!
業務のなかで、「Googleフォームとスプレッドシートの連携設定はしないで、スプレッドシートに回答を書き込みたい!」というニーズがあったため、GASスクリプトを作成しました。
同じニーズを持っている方は「きっといるはず、現れるはず」ということでこの記事を書きました!
最後に、dotDでは、新しい事業を共に作っていくためのエンジニアのメンバーを募集しています!
少しでも興味を持ってくださった方はお気軽にご連絡ください!!