この記事はdotD公式noteの転載です。
執筆者は、Server-side Engineer 前田翔平さんです。
https://www.wantedly.com/companies/company_7005547/post_articles/372001
こんにちは!dotDでmeepaの開発を担当している前田です。
今回は「Googleフォームの回答をスプレッドシートに書き込むGASスクリプト」のソースコードを共有します!
スクリプトを書かなくとも、Googleフォームの設定で、スプレッドシートと連携させ、指定したスプレッドシートにフォームの回答を書き込むことは可能です。
Googleフォームとスプレッドシートの連携設定は簡単にできます。
ですが、以下のように、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フォーム送信時に受け取れるイベントオブジェクトとメソッド一覧は以下のドキュメントから確認できます。
Event Objects | Apps Script | Google Developersdevelopers.google.com
スクリプトの実行方法
Googleフォームが送信されたら、スクリプトが実行されるように設定をします。
画面左側の「🕓」アイコンをクリックして、以下のようにトリガーを設定して、保存します。
これで、Googleフォームの送信がトリガーとなって、書いたスクリプトが実行されるようになります。
フォームを送信する
ここまでくれば、Googleフォームのアンケートに答えたら、指定したスプレッドシートに回答内容が書き込まれるようになります!
上記のように回答して「送信」すると・・・
スプレッドシートに回答内容が書き込まれました!🎉
まとめ
今回は「Googleフォームの回答をスプレッドシートに書き込むGASスクリプト」のソースコードを共有しました!
業務のなかで、「Googleフォームとスプレッドシートの連携設定はしないで、スプレッドシートに回答を書き込みたい!」というニーズがあったため、GASスクリプトを作成しました。
同じニーズを持っている方は「きっといるはず、現れるはず」ということでこの記事を書きました!
最後に、dotDでは、新しい事業を共に作っていくためのエンジニアのメンバーを募集しています!
少しでも興味を持ってくださった方はお気軽にご連絡ください!!
株式会社dotD | 事業創造ファームdotDはB2B,B2Cに関わらずのデジタルを活用した事業を連続的、非連続的に作り出すことによって社会の基盤になることを目dotd-inc.com