mongolyyのブログ

開発(Javascript, Typescript, React, Next.js)や開発手法(スクラム, アジャイル)、勉強したことについて色々書ければと。

Googleカレンダーで休業日に出勤予定を入れている人にメンション付きでメッセージを送るSlackbotをGoogle Apps Scriptで書いてみた

https://mongolyy.hatenablog.com/entry/2020/01/09/013713 の記事の第二弾です。

背景

現在所属する会社で、アルバイトの方はGoogleカレンダーに予め出勤予定を入力することになっているのですが、会社の休日が多いこともあり、休日に出勤予定入れてしまっている人がいます。社員がいちいち指摘するのも面倒&忘れるので、出勤がある日に自動でチェックし、一ヶ月後までの予定が入っていないようであれば、Slackでメンション付きのメッセージを送るGoogle Apps Scriptを書きました。

コード

以下の部分を修正してください

  • 6行目 GoogleカレンダーID, slackのuser_idの配列を実際の値に書き換える
  • 11行目 会社全体のカレンダー
  • 13行目 会社全体のカレンダーで休みを識別できる文字列
  • 127行目 urlを実際のwebhookのURLに書き換える

使い方

  1. SlackでIncoming WebHooksを有効にし、Webhook URLを取得
  2. Google Apps Scriptを作ったことない人は)chromeのウェブストアからGoogle Apps Scriptのアプリをインストールし、Google driveGoogle Apps Scriptを保存できるようにする
    https://chrome.google.com/webstore/detail/google-apps-script/eoieeedlomnegifmaghhjnghhmcldobl?hl=ja
  3. コードを貼って、GoogleカレンダーID, slackのuser_id, webhookのURLの修正を行い、保存する
  4. Google Apps Scriptの編集画面のツールバーの時計アイコンをクリックし、トリガー設定画面に遷移する
    f:id:mongolyy:20200109013116p:plain

  5. トリガー設定画面で右下の[+ トリガーを追加]ボタンをクリック。以下の設定をする
    ・実行する関数:main
    ・実行するデプロイを選択:Head
    ・イベントのソースを選択:時間主導型
    ・時間ベースのトリガーのタイプを選択:日付ベースのタイマー
    ・時刻を選択:(任意の時間を設定)
    ・エラー通知設定:(任意)

Googleカレンダーに出勤予定が入っていない人にメンション付きでメッセージを送るSlackbotをGoogle Apps Scriptで書いてみた

背景

現在所属する会社で、アルバイトの方はGoogleカレンダーに予め出勤予定を入力することになっているのですが、まあまあの頻度で出勤予定の入力忘れがあり、かつ、社員がいちいち指摘するのが面倒&忘れるので、出勤がある日に自動でチェックし、一ヶ月後までの予定が入っていないようであれば、Slackでメンション付きのメッセージを送るGoogle Apps Scriptを書きました。

コード

以下の部分を修正してください

  • 6行目 GoogleカレンダーID, slackのuser_idの配列を実際の値に書き換える
  • 70行目 urlを実際のwebhookのURLに書き換える

使い方

  1. SlackでIncoming WebHooksを有効にし、Webhook URLを取得
  2. Google Apps Scriptを作ったことない人は)chromeのウェブストアからGoogle Apps Scriptのアプリをインストールし、Google driveGoogle Apps Scriptを保存できるようにする
    https://chrome.google.com/webstore/detail/google-apps-script/eoieeedlomnegifmaghhjnghhmcldobl?hl=ja
  3. コードを貼って、GoogleカレンダーID, slackのuser_id, webhookのURLの修正を行い、保存する
  4. Google Apps Scriptの編集画面のツールバーの時計アイコンをクリックし、トリガー設定画面に遷移する
    f:id:mongolyy:20200109013116p:plain

  5. トリガー設定画面で右下の[+ トリガーを追加]ボタンをクリック。以下の設定をする
    ・実行する関数:main
    ・実行するデプロイを選択:Head
    ・イベントのソースを選択:時間主導型
    ・時間ベースのトリガーのタイプを選択:日付ベースのタイマー
    ・時刻を選択:(任意の時間を設定)
    ・エラー通知設定:(任意)

分散と不偏分散の分母の違い

引き続き統計の勉強

本日は統計検定の過去問を解いてます。

自分の記憶では分散は

\displaystyle
V(X) = \frac{1}{n} \sum_{i=1}^{n}(x_i - \bar{x}) ^2
と思ってたけど、
統計検定の模範解答を見てると

\displaystyle
V(X) = \frac{1}{n-1} \sum_{i=1}^{n}(x_i - \bar{x}) ^2

n-1!?!?
以下のサイトを見たら納得できました。
標本数が母集団に比べて非常に小さいときはn-1で割るのね...


参考:
不偏分散はなぜ n – 1 で割るのか? – NaviPlus Engineers' Blog

スタージェスの公式の導出

スタージェスの公式
 k=1+log_2 n (k:階級数, n:観測値)

級数kで、階級i(i=0,...,k-1)の度数を{}_{k-1} C _iとする。
(正規分布であることを仮定。データ量が多いとき、二項分布は正規分布で近似できることを利用)

データ数nを求める。
{
\displaystyle
\begin{align}
n &= \sum_{i=0}^{k-1} {}_{k-1} C _i \\
&= (1 + 1)^{k-1} \\
&= 2^{k-1} \\
k &= 1 + log_2 n \\
\end{align}
}

参考
[雑感] ヒストグラムは怖い -スタージェスの公式-

プライバシーポリシー

プライバシーポリシーと免責事項

個人情報の利用目的

当ブログでは、お問い合わせ等、場合によってはお名前、メールアドレスを頂いております。

これらの個人情報は、メールで質問に回答する場合のみ利用させていただきますので、それ以外の目的では使用いたしません。

個人情報の第三者への開示

当サイトでは個人情報を適切に管理し、以下に該当する場合を除いて、第三者に情報を開示することはございません。

●本人の了解がある

●法令などへの協力のために、開示が必要な場合

三者配信の広告サービスとクッキー(Cookie

当サイトでは、第三者配信の広告サービスである「グーグルアドセンスと「Amazonアソシエイト「もしもアフィリエイトを利用し、第三者配信事業者や広告ネットワークの配信する広告が掲載されます。

グーグルアドセンス等の第三者配信の広告サービスでは、Cookieを利用することで、ユーザーが当サイトに訪れた情報や過去他のサイトに訪れた情報に基づき、適切な広告を表示します

グーグルアドセンスCookieを利用した広告を無効にする方法についてはこちらの広告設定をご参照ください、もしくはhttp://optout.aboutads.infoにアクセスすれば、パーソナライズ広告に使われる第三者配信事業者の Cookie を無効にできます。

 

使用しているアクセス解析ツール 

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用していて、このトラフィックデータは匿名で収集されており、個人を特定するものではありません。

この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

免責事項

当サイトに掲載されている情報の正確さについて可能な限り努力をしていますが、その正確性や適切性に問題がある場合、告知無しに情報を変更・削除する事があります。

当ブログの情報を用いて行う一切の行為、被った損害・損失に対しては、一切の責任を負いかねますので、ご了承ください。