ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

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つあるらしい

qiita.com

Google Formのものではなく間違えてSpreadSheetへのアクセス権が設定されていてもsubmitのタイミングで呼び出せてしまって、以下のサンプルコードでformの値を取得するために使われているgetItemResponses関数がundefinedとなりまともに動作しない

更に自分の環境が悪いのかgetItemReponsesundefinedだというエラーが自分の環境だと表示されず*1

aliasに設定してないと送信できない

これはやらないとできないと書いてる記事を見て、やってない場合にできないことを体力が削られすぎて確認まではしてない。とりあえず自分は設定したのでもしメール送れなかったら確認してもいいかも

tonari-it.com

サンプルコード

以下設定値とサンプルコード

{
  "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年度版

yuzu441.hateblo.jp

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冊くらいは目標にしたい

技術書

仕事で必要になったりで買ってみたものの読む速度が遅くて、もらった本とかも未だに積んでてまずい

ソフトウェア・ファースト あらゆるビジネスを一変させる最強戦略

ソフトウェア・ファースト あらゆるビジネスを一変させる最強戦略

今年のベスト・オブ・書籍

前職で不満だったところとか、そういう所駄目なんだよなみたいな所共感がすごくて、そうなんだよな〜ボタンがあったら無限に押したい書籍

失敗から学ぶRDBの正しい歩き方 (Software Design plus)

失敗から学ぶRDBの正しい歩き方 (Software Design plus)

DBの勉強したくて買った。何度も読み返しているがやっぱDBの設計って難しいね

DNSってなんとなくしか理解してなかったけどめちゃくちゃわかりやすくて、DNS完全に理解した気持ちになれる

スターティングGo言語

スターティングGo言語

仕事でGolangをやろうということになったので読んでいた

その他

ナナメの夕暮れ

ナナメの夕暮れ

リトルトゥースなので読んだ。すごい共感できることが多かったんだけど、これ共感したらダメなのでは🤔

改めて若ちゃん結婚おめでとう

労働2.0 やりたいことして、食べていく

労働2.0 やりたいことして、食べていく

もともと好き*1だったけど、ANNがおもしろ過ぎたので買ってみた

考えだったり伝えるのがとてもうまい人なので読みやすくて良き

全く関係ないんだけど、幸福洗脳Tシャツ欲しいな〜と言いながらANN布教してたら会社の人がプレゼントしてくれたのいい思い出

amazon prime reading

amazon prime契約してると無料で読めたので読んだ。ただ今の所起業予定はないし、個人事業主もする予定ない

載せてないけど一部だけRayも読んでる

カラー版 マンガでわかる 個人事業の始め方

カラー版 マンガでわかる 個人事業の始め方

  • 作者:
  • 出版社/メーカー: 西東社
  • 発売日: 2015/09/01
  • メディア: Kindle

カラー版 マンガでわかる 会社の設立・運営

カラー版 マンガでわかる 会社の設立・運営

  • 作者:
  • 出版社/メーカー: 西東社
  • 発売日: 2016/12/01
  • メディア: Kindle

難しいことはわかりませんが、英語が話せる方法を教えてください!

難しいことはわかりませんが、英語が話せる方法を教えてください!

*1:ラジオ好きとしては例の騒動は伝説だよな