{"description":"\u3084\u308a\u305f\u3044\u3053\u3068 \u524d\u56de\u3001SendGrid\u306eWebhook\u3092Datastore\u306b\u8caf\u3081\u308b\u3068\u3053\u308d\u307e\u3067\u9032\u3081\u305f\u3002 tminami.hatenablog.com \u4eca\u56de\u306f\u4fdd\u5b58\u3057\u305f\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308bAPI\u3092\u3001\u540c\u3058\u304fGoogle Cloud Functions\u3067\u3064\u304f\u308b\u3002 Cloud Functions\u306e\u8a2d\u5b9a\u7b49\u306f\u524d\u8a18\u4e8b\u53c2\u7167\u3002 \u30bd\u30fc\u30b9 index.js const Buffer = require('safe-buffer').Buffer; const Datastore = require('@google-cloud/datastore'); const BASIC_USERNAME = process.env.B\u2026","url":"https://tminami.hatenablog.com/entry/2018/09/03/185740","published":"2018-09-03 18:57:40","title":"Cloud Datastore\u306b\u4fdd\u5b58\u3057\u305fSendGrid\u306eWebhook\u3092\u53c2\u7167\u3059\u308bGoogle Cloud Functions API","categories":[],"version":"1.0","height":"190","provider_name":"Hatena Blog","blog_url":"https://tminami.hatenablog.com/","blog_title":"373\u2019s blog","image_url":null,"author_url":"https://blog.hatena.ne.jp/takuya_minami373/","author_name":"takuya_minami373","width":"100%","provider_url":"https://hatena.blog","type":"rich","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftminami.hatenablog.com%2Fentry%2F2018%2F09%2F03%2F185740\" title=\"Cloud Datastore\u306b\u4fdd\u5b58\u3057\u305fSendGrid\u306eWebhook\u3092\u53c2\u7167\u3059\u308bGoogle Cloud Functions API - 373\u2019s blog\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>"}