忍者ブログ
物理学者(ポスドク)による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)
この記事に続き
■ 参考 : 【html/Javascript/GAS】投票フォームのあれこれ




htmlでの入力をgoogleスプレッドシートに流そう、と思い立ってあれこれと方法を調べてみました
スプレッドシートを使う利点としては、
・自分でデータベースを用意せずにデータを保存できること
・誰でも閲覧できるように設定できる、なおかつ閲覧のみにも設定できる
・csv形式で書き出すこともできるので、再活用が容易、今回の場合は将来的に使えそうなデータになるかも?
などが挙げられるかと思います

実際にじゃあどうやるのか?と思って調べてみたら簡単なコードも載ってるページがありました

■ 参考 : javascript – 単純なHTMLフォームを介してGoogleスプレッドシートに基本データを追加する

htmlに以下のようなフォームを用意する
<form id="form" method="get" action="スクリプトのURL" accept-charset="UTF-8">
<input type="text" name="newletter_name" placeholder="Name" />
<input type="text" name="newletter_email" placeholder="Email" />
<input type="submit" value="Subscribe" />
Google Apps Scriptとして以下のものを用意する
function doGet(e){
var vals=[];
vals.push(new Date());
for(var i in e.parameter){
vals.push(e.parameter[i]);
}
SpreadsheetApp.openById("スプレッドシートのID").appendRow(vals);
return ContentService.createTextOutput("added");
}
これでhtmlフォームに「name」「Email」を書いてsubscribeボタンを押すと
それがスプレッドシートに追加されます
パラメーターの個数分だけはfor文が回るのですべてスプレッドシートに追加されます





■ 作業手順
1. スプレッドシートをgoogleアカウントで作成する (スプレッドシートのURLを覚えておく)
2. 上のメニューバーからツール→スクリプト エディタ → 上記のスクリプトをコピペする
3. スクリプトに実行権限を与える(permission)
4. 表示されたスクリプトのURLをコピペして、上記のhtmlに貼り付ける

という感じ

3の実行権限のところは以下のページに画像付きで説明がある
■ 参考 : Google Apps Scriptの初回実行に必要となる承認手順

3の実行権限のところは以下のページに画像付きで説明がある
■ 参考 : Google Apps Scriptで簡単にWebアプリケーションを公開する方法





もし事前にパラメーターの名前がすべてわかっているなら、
スクリプトを以下のように置き換えてもOKです
function doGet(e){
var vals=[];
vals.push(new Date());

vals.push(e.parameter.newletter_name);
vals.push(e.parameter.newletter_email);

SpreadsheetApp.openById("スプレッドシートのID").appendRow(vals);
return ContentService.createTextOutput("added");
}
最初の new Date() はスクリプトが実行された時刻が入ります





またスプレッドシートを使ってなにかしたくなったとき用のメモ

■ 参考 : フォーム – フォームを使用してGoogleスプレッドシートの既存のデータを更新する


■ 参考 : JavaScriptを使用してHTMLフォームからGoogleスプレッドシートにデータを送信する方法


■ 参考 : GAS ビギナーが GAS を使いこなすために知るべきこと 10 選
2019年6月段階では1つのスクリプトは6分以内に終了しないといけないって制限があるけど
自分のはとても軽いから問題なさそう


■ 参考 : HTMLのフォームからGASにPOSTする
↑この人がやってることはすごくわかる・・・
スプレッドシートになにかを追加したあとに表示されるページから、すぐに投票のwebページに戻りたいのにどうしたらいいかわからない
自分は投票時に表示されるページを新しいタブorウィンドウで表示させることで対応した


■ 参考 : GASでURLを踏んでスクリプトを動作させたときにパラメータを渡す方法


■ 参考 : 3 分で作る無料の翻訳 API with Google Apps Script
Google Apps Scriptをサーバーとして使ってる
なにか情報を要求したら、それに対する応答が返ってくる
ここでは、翻訳機として使ってる
まだまだ汎用性がありそう







(2019/11/13 追記)

配列にpush()でなにか値を追加したときの挙動が気になったので調べてみた

■ 参考 : GASの配列の扱い方について(定義、要素の追加、削除)

■ shift()
配列の最初の要素を取り除き、取り除いた要素を返す

■ unshift()
配列の最初に1つ以上の要素を追加し、追加後の新しい配列の長さを返す

■ push()
配列の末尾に1つ以上の要素を追加する

■ pop()
配列の最後の要素を取り除き、取り除いた要素を返す

■ splice()
配列内の指定した位置にある古い要素を取り除きつつ、新しい要素を追加する




PR
この記事にコメントする
Name
Title
Color
E-Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST

print "先月子供が産まれました!"

# 最終更新 2022/10/25
カウンター
カウンター カウンター
ブログ内検索
ツイートするボタン
リンク
相互リンク募集中です (Twitterにてお知らせください)

Demo scripts for gnuplot version 5
(gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)

gnuplotスクリプトの解説
(米澤進吾さんの個人ページ、gnuplotと言えばこのかた)

gnuplot のページ
(Takeno Lab、うちのブログがリンクされていたのでリンク返し)

Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco
(映画の感想をまとめられるサイト、いつもお世話になっています)

Astronomy Picture of the Day Archive
(天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)

今日のほしぞら
(任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)

GNUPLOTとアニメーション
(応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)

読書メーター
(読んだ本をリストできる便利なサイト)

flickr難民の写真置き場
(20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)

教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定
(阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)

英語論文執筆用の例文検索サービス
(とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)


Template "simple02" by Emile*Emilie
忍者ブログ [PR]