GoogleFormがsubmitされた時にgasからメールを投げる
会社のwebサイトに導入したGoogle Formがsubmitされた時にG Suiteで用意したメーリングリスト(グループ)にメールを送りたかっただけなのに
信じられないくらいハマって時間かかったので、誰かが同じような所でハマった時に助けになればと思いメモ
ハマった点
appscript.jsonに使うものは手書きしないといけない
appscript.jsonというマニフェストに、使用するものはoauthScopes
に手書きしないといけない
コード的に使用しているものがうまく認識されれば勝手に入るらしいけど、関数の引数で渡ってくるeventとかでformとか判断するのは無理そうだった
マニフェストに書いても有効になっていない
例えばGoogle Formであればhttps://www.googleapis.com/auth/forms
というURLを設定するが、スクリプトエディタの画面で実行ボタンを押した時に初めて出る認証のダイアログで認証が完了して初めて有効になる
ちなみにフォームから呼ばれた時等のイベント発火では当然ながらダイアログは出ない
submit関数2つある
submitが2つあるらしい
Google Formのものではなく間違えてSpreadSheetへのアクセス権が設定されていてもsubmitのタイミングで呼び出せてしまって、以下のサンプルコードでformの値を取得するために使われているgetItemResponses
関数がundefined
となりまともに動作しない
更に自分の環境が悪いのかgetItemReponses
がundefined
だというエラーが自分の環境だと表示されず*1
aliasに設定してないと送信できない
これはやらないとできないと書いてる記事を見て、やってない場合にできないことを体力が削られすぎて確認まではしてない。とりあえず自分は設定したのでもしメール送れなかったら確認してもいいかも
サンプルコード
以下設定値とサンプルコード
{ "timeZone": "Asia/Tokyo", "oauthScopes": ["https://www.googleapis.com/auth/script.send_mail", "https://www.googleapis.com/auth/gmail.modify", "https://www.googleapis.com/auth/forms" ], "dependencies": { }, "exceptionLogging": "STACKDRIVER" }
"use strict"; function myFunction(e) { var itemResponses = e.response.getItemResponses(); var msg = itemResponses.map(function (res) { return res.getItem().getTitle() + ":\n" + res.getResponse(); }).join('\n\n'); var address = ''; var options = { noReply: true, from: address }; GmailApp.sendEmail(address, 'HPお問い合わせ', msg, options); console.log('done'); }
最後に
参考にさせていただいた記事のおかげでとりあえず動くものはできました。ありがとうございます。
*1:undefinedを関数としてコールしてんだからエラー出せよとすごい思う
2019年振り返り
去年も書いてたやつの2019年度版
2019年
仕事
去年はGWまでには〜って言ってたけど3月には再就職してたので思ったより早かったな
転職してからはReact Nativeでアプリ開発したり、 Node.js × awsの案件をやったりしてた
今はReact, Golang, GCPをメインでやっているんだけど、自社サービスなのでアーキテクトから全部自分で考えてやってる。 前職だとやりたいこと言っててもなんか変な飛び道具案件ばっかだったので、今の方が段違いに大変だけどやりたいことができてて楽しい
あとは会社の経費で東京のイベントに参加できるようになったのでAWS Summitに参加したりした その結果Datadog様にiPhoneXSを頂くとかいう奇跡が起きたので、デモとか見て良さそうだと思ってたのもあって自社サービスの運用始まったら導入を提案しようと思ってる
とにかく約1年がむしゃらにやってみた結果、今まではコードのアーキテクチャを考えてたら割となんとかなってたけど、もっとシステム設計だったりセキュリティだったりも意識しないといけないし。 何よりブラウザの気持ち(preflightで地味にハマった)をもっと知っていかないといけないと感じた
アウトプット
アウトプットする癖がないので、一応社内wikiは書いてるが公開されるアウトプットがうまくできなかった
podcastするって言ってたのもできてないけど、知り合いがyoutuberになったりしてるのでそういう行動力見習って何かしら来年こそは。。。
ラジオ
転職もして落ち着いた結果、朝起きて深夜ラジオを聴きながら出社する準備をするのがルーティーンのようになって去年比で聞いてる量がとても増えた(乃木坂さんでラジオをやってる人が多いのも理由の1つ)
死ぬほど面白いのでオードリーのANNをみんな聴いてくれ
坂道グループ
課金のやつでも書いたけど、2020年も継続です
(1月に発売されるのが楽しみすぎて早く1月になってほしい)
今年は日向坂さんがデビューしたり、坂道グループの話ができる友達ができて一緒にライブ行ったりしてとても楽しかった。来年も行きたいし推すしかない
2020年
いろいろあってあんまり成果を出せていない気がするので、来年はもうちょっと成果を意識したい
直近でSPAの認証周りが調べても「そこにその責務渡すのはな〜」とか「tokenはlocalstorageに〜」というしっくり来ないものが多くて、だからと言って自分でいい実装が思いつかないといったことがあったので、そこらへん考えるついでに仕事で使っているReact, GCPを中心に来年は勉強して行こうと思う
そういえば転職した結果、チームに対しての意見とか考えをを聞いてもらえる機会が増えて、思ってたよりエンジニアリングマネージャーみたいな働き方に興味があるんだなって気づいたけど、これはどうやってキャリア形成すべきなのかよくわからないのでそこらへんも模索したい
2019年に読んだ本
きりがないので漫画は入れない
書き出してみてわかる、本読んでるつもりだったけど案外読んでなかったので来年は月1冊くらいは目標にしたい
技術書
仕事で必要になったりで買ってみたものの読む速度が遅くて、もらった本とかも未だに積んでてまずい
今年のベスト・オブ・書籍
前職で不満だったところとか、そういう所駄目なんだよなみたいな所共感がすごくて、そうなんだよな〜ボタンがあったら無限に押したい書籍
DBの勉強したくて買った。何度も読み返しているがやっぱDBの設計って難しいね
- 作者:株式会社日本レジストリサービス(JPRS) 渡邉結衣、佐藤新太、藤原和典
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/11/22
- メディア: 単行本
DNSってなんとなくしか理解してなかったけどめちゃくちゃわかりやすくて、DNS完全に理解した気持ちになれる
仕事でGolangをやろうということになったので読んでいた
その他
リトルトゥースなので読んだ。すごい共感できることが多かったんだけど、これ共感したらダメなのでは🤔
改めて若ちゃん結婚おめでとう
もともと好き*1だったけど、ANNがおもしろ過ぎたので買ってみた
考えだったり伝えるのがとてもうまい人なので読みやすくて良き
全く関係ないんだけど、幸福洗脳Tシャツ欲しいな〜と言いながらANN布教してたら会社の人がプレゼントしてくれたのいい思い出
出社したら机に置かれていたwwパッケージ的に怖いww #幸福洗脳 pic.twitter.com/52EIWdep8g
— ゆず☕️ (@yuzu_441) 2019年4月11日
amazon prime reading
amazon prime契約してると無料で読めたので読んだ。ただ今の所起業予定はないし、個人事業主もする予定ない
載せてないけど一部だけRayも読んでる
難しいことはわかりませんが、英語が話せる方法を教えてください!
- 作者:スティーブ ソレイシィ,大橋 弘祐
- 出版社/メーカー: 文響社
- 発売日: 2017/07/26
- メディア: 単行本(ソフトカバー)
*1:ラジオ好きとしては例の騒動は伝説だよな