投稿

Google App Scriptでカレンダーからスプレッドシートに予定と時間を出力

 タイトルのまんまです。ちょっと仕事でラクしたいなと思って GAS にて準備しましたが、もう少し考えないといけない部分とかあったけど、基本部分は応用で使えそうなので置いておきます。 カレンダーに登録されている当日の予定をすべて引っこ抜いてきて日付名のシートをつけて出力するという内容です。シート出力済みの制御とか考えてなくて、1日1回スケジューラで実行する予定でしたが、ほかにも考えないといけないことが出てきたので少し考え直し中 ほとんど参考サイトのコピペですけどね。 ■ソースコード //カレンダーIDとスプレッドシートのURLを指定 const CALENDAR_ID = 'XXX'; const SHEET_URL = "https://docs.google.com/spreadsheets/d/XXXXX/edit#gid=X"; function main() { //カレンダー取得用日付設定 const n = 1; const d = new Date(); const todayStartTime = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0, 0); const nd = d.setDate(d.getDate() + n, d.setHours(0), d.setMinutes(0), d.setSeconds(0)); const todayEndTime = new Date(nd); const nextdayEndTime = new Date(n2d); //カレンダーからタスク取得 const todayTasks = getCalendarEvents(todayStartTime, todayEndTime); const nextdayTasks = getCalendarEvents(todayEndTime, nextdayEndTime); //スプレッドシート書き出し const sheetname = todayStartTime.getFullYear() + '-' + t...

TerraformでGoogleAPPEngineを構築してみた

イメージ
Terraform シリーズもいよいよ今回で最後かなぁと思っています。 前回 に引き続いて PaaS の構築です。既に Alibaba に追い抜かれてはいますが、三大クラウドの一角の GCP です。 GoogleAppEngine と DataStore を使用するアプリを作成し、そいつを展開するところをTerraformでやってみようというわけです。 まぁ↓こんな感じの構成です。 サンプルアプリは こちら に保存しています。 Azureの時 と同様にまずは CloudSDK で試してみてからTerraformにてやってみます。またしてもtfファイルは GitHub には上げていないという、、、。いい加減にGitに上げる様にした方がいいんだろうなぁと思うんですが後で見返す際にやりやすいのでこうしています。 カスタムドメイン に関してはどうしても手動の部分があるので切り分けて共通項目としてくくりだしているのでTerraform化はしていません。カスタムドメインと無償SSLの箇所については他に いいサイト があるのでそちらを参照いただいた方がいいかもしれないです。 ◆設定作業編 1.CloudSDK版 # ソースコードのコピーとライブラリインストール $ cd workdir $ git clone https://github.com/Otazoman/GAEWebAppSample.git $ cd GAEWebAppSample $ mkdir lib $ pip install --upgrade pip $ pip install -t lib -r requirements.txt #GCPプロジェクト作成 $ gcloud projects create ${project_name} --folder=${folder_id} #GAE作成 $ gcloud app create --project=${project_name} Please choose the region where you want your App Engine application located: [1] asia-east2 (supports standard and flexible) [2] asia-northeast1 (supports st...

AWSのSESでサンクスメール配信のひな形作ってみた

イメージ
諸般の事情でAWSの SES を使わないといけなくなっちゃって、検証がてら いじっていて、結構ややこしかったので備忘録的に手順をまとめておきます。 全体の手順としては以下の様な感じ。SDK組み込んだプログラムからしか SES送信用のAPIを叩けない様に設定しています。 1.SESの設定 2.SNSから呼び出すLambda作成 3.SNSの設定(BOUNCE対応) 4.DynamoDB作成(BOUNCE対応) 5.SESを使うLambdaの作成 6.Cognitoの設定 7.APIGateway設定 8.フロントプログラムの準備 9.SESのBOUNCE設定 ◆作業手順(やや省略) 1.SES設定 先人が色々とまとめてくださっているので割愛、東京で使えるようになったので 東京リージョンで設定したほうが色々と楽です。 注意点としてはsandboxの解除申請を行うこと。これを忘れていると外部にメール 送信できません。 2.SNSから呼び出すLambda作成 BOUNCE時にBOUNCEになったメールアドレスをDynamoDBに登録する Lambdaを準備します。 import datetime import json import os import boto3 BOUNCE_TABLE = os.getenv('TABLE_NAME') dynamodb = boto3.resource('dynamodb') def lambda_handler(event, context): try: table = dynamodb.Table(BOUNCE_TABLE) msg = event['Records'][0]['Sns']['Message'] b = json.loads(msg) bounce_type = b['bounce']['bounceType'] bounce_mail = b['bounce']['bouncedRecipients'][0]['emailAddress'] ...

TerraformでAzure Web Appsを構築してみた

イメージ
またしても Terraform です。5月入ってから隙間時間は業務含めてTerraformをいじっている感じです。 前回 までは AWS でテラってましたが今回は Azure です。しかも Web Apps と Table Storage サービスを利用して簡単なサンプルを作成し展開します。 こんなイメージです典型的なサーバレス?構成の一つですね。 サンプルアプリは こちら に保存しています。 まずは AzureCLI で試してみます。それができてからTerraform化します。 自分が後で見返すときにこっちの方が思い出しやすいのでこっちでまとめています。 *ほんといい加減 Git に上げたほうがいいのは分っている、、、 でうまくいけばカスタムドメインつけてSSL証明書をくっつけたいと思いましたが そこは諸般の事情(お金がないので)挫折しました。 ◆設定作業編 1.AzureCLI版 #リソースグループ作成 $ az group create --name sample_webapps_20200602 --location japaneast #ストレージアカウントグループ作成 $ az storage account create \ --name samplestorage20200602 \ --resource-group sample_webapps_20200602 \ --location japaneast \ --sku Standard_GZRS #テーブル作成 $ az storage table create --name tabletohonokai --account-name samplestorage20200602 #接続文字列取得 $ az storage account show-connection-string --name samplestorage20200602 #サンプルアプリコピー $ git clone https://github.com/Otazoman/AzureWebappsSample.git $ cd AzureWebappsSample #サンプルアプリコンフィグファイル修正(接続文字列設定) $ cp m...