少しずつ手作業を減らしていく:OutlookとFlowとマクロの組み合わせで集計作業をより簡単に

語学学校やプログラミングのイベントに出席するためには、残業せずに帰宅できるように全力で仕事をする必要がある。別にダラダラと仕事をしているわけじゃない。これまでだって、PhraseExpressを使ってテンプレートを作ってみたり、マクロを活用する仕組みを考えて効率化を進めてきたくらいだ。それでも、定時帰宅するには努力が足りないっぽい。(人員不足じゃなかろうかとも思えるけど、補充される気配はない。)

あまり大きな変更をする時間的余裕はないので、これまで効率化を進めてきた業務をほんのちょっとだけ改良をしてみることにした。(本当にちょっとだけ)

業務概要

当該業務は以前も書いているが、「毎月自動配信されてくるCSVデータを集計する」という業務で、これまでは以下の流れで対応していた。

以前の記事

カップヌードルを作る時間くらいで作業を終わらせたい。

  1. 自動配信されたメールの添付ファイルをSharePoint上の指定のフォルダに格納。
  2. 集計用エクセルファイルを開き、データの更新をして保存。
  3. 営業チームへ共有。(了)

これでも十分なほどにシンプルな流れを作ることが出来たと思っている。

改善ポイント

以前から改良の余地には気がついていたものの「それなりに動くしいいっか」と放って置いたものも含め、ほんのちょっとずつ変更してみた。

  1. 自動配信メールの添付ファイルを自動でSharePointに格納。
  2. 集計ファイルをマクロで作り、ファイルを開いたらピボットテーブルが更新され、閉じると同じフォルダに、【YYMMDD_[ファイル名].xlsx】という名前のファイルが追加される。
  3. 2.のファイルを営業チームへ送信(→残念ながらまだマニュアル処理)。(了)

それでは、順に説明していく。

メールの添付ファイルをSharePointの指定したフォルダへ格納する《Outlook》《Flow》

Microsoft Flowを使って実現する。このタスクに限らず、私が一番使っているフロー。受信フォルダに入ってきたメールをそのまま指定することも可能だが、Inbox Zeroを目指しているので、別にフォルダに仕分ける。

仕分けのルールはよく知られた機能だけど、念の為、以下が設定方法。

仕分けルールの概要とポイント

次に、Flowで指定のフォルダに条件に当てはまるメールが追加されたら、添付ファイルをSharePointに保存する設定をする。

フローを最初から作るのも良いが、MS Flowのページで、EmailとかSharePointなどとキーワードを入力すると、サンプルのフローがヒットするので、それを少し修正して使うのがミスなく簡単に出来ると思う。

下図が、サンプル。私はメールの詳細設定で、送信者アドレス、件名に含まれる文字、添付の有無を指定している。(前述のメールの仕分け部分でしているので本来は不要だが、念には念を。)

MicrosoftFlow_sample

簡単。

最新版のデータファイルを作成する《マクロ》

PowerQueryを使っているのでデータファイルが指定したフォルダに格納された時点で、タスクの8〜9割は完了している。残りの1〜2割がピボットテーブル・作成日の更新。

今回は、これをマクロで解決。マクロ有効ファイルを開いたら、ピボットテーブルを更新し、日付を入力。マクロ有効ファイルを閉じたら、ファイル名に日付の入ったxlsxファイル(マクロなし)を作成する。

■ファイルを開けた時

■ファイルを閉じる時

右上の【☓】をクリックして閉じて問題ない。

おまけ

実は、データの更新に関しては、マクロを使用しない方法もある。設定で「ファイルを開いたら更新」という機能をオンにすればいい。

Pivot_refresh_setting

ただ、この方法を取ると、当該ファイルだけでなく、どのエクセルファイルを開いても即座にデータが更新されてしまうので、あんまり嬉しくない。今回、マクロでの解決策を選択したのはこういう理由。

Advertisements

2018年4月の活動記録

休みもあったからか、すごく早く過ぎた気がする。忙しかったというのもあるだろう。4月はものすごく無駄遣いをした月。ストレス溜まってたのかな。

食生活

4月は会食は少なかったものの、そのボリューム・カロリーは大。アルコールは前回の反省どおり、やや抑えた。基本1日1食の生活にも慣れ、時々、2食や3食の日が出ても、次の日にはすぐ1食に戻せている。

5月は出張に会食の予定が結構ある。お酒の量が多くなりそうな会食ばかりなので、普段の食生活と運動でカバーしたい。

仕事(定型業務)

スケジュールBotについては進捗なし。Node.jsを少しずつ勉強しているが、全くゴールが見えない。。。もうMS Teamsとの連携はキッパリ諦めてしまおうか、ともやや弱気。

WorkflowやPhraseExpressのテンプレがあるので、スマホ・PCどちらからでも予約業務や定型の資料送信業務などは1分もかけずに終わらせることが出来る。しかし、この効率化がチームの不和を生んだ4月。

3月の2週間ほど同僚が体調不良で休んだので、彼女の仕事を全部渡しがやってしまった。。。復帰した彼女から不在中の仕事の引継ぎをしてほしいと言われてたのだけど、渡したのは「○○:完了、○○:完了、○○:完了」とほぼ完了したリスト。その後、彼女は他の同僚に「私、仕事がない」と泣いていたようで、彼女には何か残しておかないといけないのだと反省。(とは言え、2週間も放っておけるような仕事はしてほしくないのだけど。)

自分よりも年上ということで、当たり前に社会人としての心構えが理解できていると思い込んでいたのが良くなかったのかもしれない。仲良しサークルなら、役割分担しておしまいにも出来るけど、残念ながら、ウチの会社ではスピードを要求されることが多々あるんだよな1

無駄遣い

4月はドイツ語の受講料、テキスト代、辞書購入、アプリの購入、旅行代金の支払いなど、3月以上に出費の多い月だった。

ジムの会費(ー)

3月から引き続き通っている。回数券制なので無駄にはなっていないと信じている。

ドイツ語受講料・テキスト・辞書(増)

3年前に通っていた学校と同じ学校を選択。もっと安い学校もあるけれど、やっぱり信頼度が抜群の学校なので。クラスメイトも真剣な人が多い。前に通っていた学校の1クラスの人数よりもずいぶん多いけれど、だからといって不満はない。グループ内で教え合ったりするので、勉強している時間が少ないと感じない。

前回までは、独和辞典だけで頑張っていたけど、今回再開するにあたって和独も購入。宿題で作文もあるので重宝している。

アプリの購入(増)

主にドイツ語学習アプリの購読を開始。Memriseは完全に失敗。不要だった。Duolingoは広告が嫌で課金。でも、広告さえ我慢できれば無料でも全く問題ない。LingQはもう少しレベルが上ってから利用開始すべきだったと反省。但し、1ヶ月購読にしたので、購読継続は再検討可。

5月は?

5月は仕事の方が忙しくなりそうなので、無駄遣いは減らせるのではないかと淡い期待。一方で、食生活・定型業務に関してはあまり上手く進めることが出来なさそうな予感。一つは出張・会食。一つは、今のチームで効率化が受け入れられていないという事実。効率化だけ推し進めるのは健全ではないと思うので、とりあえず、一旦は、効率化に対するチーム内のマインドセットを変えることから始めていこうと思う2


  1. 先日も、「〆切短くて悪いんだけど、この仕事今週中にお願い!」と水曜に他事務所の同僚に送ったら「〆切短いのはウチの会社入って慣れっこだよ」との返答。〆切までは長くて1週間が普通。2・3日返信しないとリマインダーがとんでくる。。。 ↩︎
  2. 年代を出すのはどうかと思うが、ある年代以上になると、IT化による効率化に抵抗を示される。今の上司はどちらかというとIT化にポジティブなのだが、彼より若いはずの同僚たちの反応が難しい。 ↩︎

《入門レベル》ドイツ語を再開するにあたって取り組んだこととその振り返り

3月の振り返りの際に記したが、ドイツ語の勉強を再開している。引っ越す前に通っていたのと同じ語学学校に、仕事の後、週2のペースで行っている。同じ学校とは言え、所変わればレッスンプランもやや変わってくるようで、1タームの授業数は前の学校よりも少ない。授業数は少ないけどレベル分けの基準は一緒。

どうやってやりくりするのだろう、と思っていたが、2回目の授業を終えたところで理解。まず、使うテキストの厚さが半分。その上、その半分の中には、ドリル(問題集)まで入っている。かなりざっくり言うと、テキスト部分が4分の1。

だからといって、「超ラク!」というわけではない。前も結構宿題の量多いと思っていたけど、更に増えた。ただ、最初から解答も配布され、基本自分で演習をするスタイル。前の学校であった答練のような時間は皆無1

「前の学校のスタイルの方が良かったな」とも思う部分もあるものの、授業料が半分程度になったことでプラマイゼロという感じ2。巷では授業料がやや高いことで有名な学校なので、安くなったのは嬉しい。

前のレベルよりも下げて再開

ドイツ語の勉強はずっと再開させたいと思っていたけど、仕事が忙しかったり、以前ほど自宅・会社から通いやすい場所でもないので躊躇していた。今回再開したのは本当に単なる思いつき。金曜の夜に「再開しよう!」と思って、授業スケジュールをググったら、ちょうど次の週の木曜から新学期が始まることが判明。

私の通っている学校では、一番下のレベル以外は、指定のテストをパスしないと入れてもらえない。「テストを受けたくない」「2年もブランクあるし、もう一回最初から始めよう」と思い、土曜日の朝、学校に申し込み方法について電話で問い合わせた。が、あれよこれよと話している内に「とりあえず前の修了証を持って申込みに来て」ということになり、すぐに学校へ向かった。

ゲーテのA1を持っていたので、「最初からやり直すのはナシ。でも、2年以上のブランクがあるから、下から2番目のレベルにしなさい」とアドバイスされて、彼女の言うがままに申し込み完了。

その帰り道に指定のテキストブックを買って、中身を見てやや動揺。「レベル2つも下げたのに、ついていける自信がない!」

短期間で超基本文法のおさらい

最初から落ちこぼれちゃう恐怖に、授業開始までの1週間弱で、基本の文法をおさらいすることにした。この短期間で超基本文法をカバーできる本は、『だいたいで楽しいドイツ語入門』になります。

出来る人からすると、基本を軽く説明した本などに対して「厳密には違う」など言いたくなる部分などあるのかもしれないが、こっちは「全部独学するわけじゃないし、とりあえずサラッと全体を把握したい。詳細は授業受けながら強化してくからいらん」とスタンスなので、『だいたいで楽しいドイツ語入門』で十分、というかベスト。

まとめを読んで、問題を解く。そしてまとめを読む。

単語を覚える・文法知識を定着させる【Duolingo】

『だいたいで楽しいドイツ語入門』のSTEP2まで終えたら、Duolingoを始めると良い。

Duolingoは使用開始時に要求される文法知識レベルについてコメントしていないけれど、文法知識皆無だと「は?」となることが多く、効率的に進めることが出来ないと個人的には思う。私がDuolingoを使い始めたのも、以前通っていた学校の先生がA1レベルの後半で紹介してくれたのがきっかけ3

ドイツ語の場合は、格・冠詞辺りを終えてないとDuolingoはつまらない、というのが私の感想。

以下、私がDuolingoを好きな理由。

名詞の性・格が覚えやすい

大学時代に第二言語として取ったフランス語は授業1回目にして挫折。その原因は名詞の性。「名詞が男女に分かれるって何?」全く理解できず拒絶反応。フランス語でそんな感じだったのに、「男性」「女性」「中性」に分かれるドイツ語をやっているのだから、人生って本当に分からない。

正解するまでしつこく問題が繰り返されるので、繰り返す内に覚えてくる。また、ある程度の数の名詞を覚えると大まかなルールのようなものも身についてくる。

リスニングやスピーキングの問題がある

単語や文法を優先させると、フラッシュカードや参考書を使った学習が主になって、音から遠ざかりがち。

リスニング

単語を読み上げるアプリで単語を覚えている、ということはあるのかもしれないけれど、1単語単位で聞くのと1文単位で聞くのではずいぶん違う。Duolingoでは短文のディクテーションができるのがオススメ。

スピーキング(と言っても短文のみ)

携帯アプリには声に出して答える問題もある。判定の精度は決して完璧じゃない。RとLの発音が誤っていたとしてもスルー。というか全く違う言葉を言っていても正解判定されるときすらある。

でも、リズムに対しては結構厳しいと思う。一つ一つの単語をハッキリと正確に発音するより、一つ一つの単語の発音が怪しくても一文を同じ拍数で言った方が正解になっている気がする。例えば「Get / up」と言うより、「げらっ」の方が良しとされる、みたいな。(この際、発音のチェックが甘いので「エラっ」と言っても正解になる。)

この発音よりもリズムが優先されるということに関しては、好みが分かれるところだろう。私自身は、Duolingoの判断方法の方が好きなタイプなので満足。

気軽に問題演習ができる

これが一番!スペルの確認や文法問題というと、ノートや問題集を開いて、また、ディクテーションというと、ノートを開いて素材を流してという手間があるけど、それらがモバイルアプリ一つで答え合わせまで完結。1セッションも5分程度。

最近特に記憶力に自信が持てなくなってきている身としては、繰り返して覚えるしかない。5分位のスキマ時間は確保できるので、とりあえずDuoligo再開から30日以上毎日継続できている。

予習の効果はあったのか?

Duolingoは学校で使っているテキストに準拠しているわけではないので、授業中に分からない単語はたくさん出てくるし、テキストのリスニング問題が聞き取れないこともある。でも、完璧じゃないから通っているわけで、落ちこぼれない程度にはついていけているという点からは予習の効果はそれなりにあったかなと思っている。

元々私の設定したレベルが「初級の授業で落ちこぼれない程度の基礎固め」なので、このように結論づけたが、これがもっと上のレベルだと当然ながら違ってくるはず。

Duolingoはお気にいりだけど、残念ながらDuolingoだけでゲーテの試験に通るとは到底思えない4し、コミュニケーションが取れるようになるとは思えない。あくまで補助ツールとして位置づけておくのがいい。


  1. 以前の学校では、授業の最初30分弱が宿題に関するトピックに当てられていた。 ↩︎
  2. 先生もドイツ人やオーストリア人じゃなくなった。でも、そこは全く気にならない。 ↩︎
  3. すごく熱心な若いドイツ人の先生で、オススメの参考書、問題集、ウェブサイト、アプリなどをまとめた資料をくれた。当時は、《広告なしで無料》だったのだけど、今回久しぶりに使ったら広告が入るようになってしまっていた。私は広告がうざすぎたので、《PLUS》にしたけど少なくともドイツ語の場合は《PLUS》と無料の差は、広告がなくなることくらいでしかないように思える。《PLUS》の料金がその機能の割に高い。。。反対に、無料でかなりのことが出来るということか。 ↩︎
  4. 独検は試験問題を見たことがないので分からない。 ↩︎

2018年3月の活動記録

だいぶ遅くなってしまったけれど3月の振り返り。

食生活

3月は出張に会食と、夕食を取る回数が多かった。しかも、その夕食のボリュームがまたすごく。こってり肉、ビール・ビールからの、ワインボトル、そして二次会でウィスキー・ウィスキー・ウィスキー。毎日ではないとは言え、こういうのが続くと自ずと体重は増加。しかも急激に。反省。一日一食生活がなし崩し的に、二食・三食と戻ってしまうかと思っていたけど、それはなかったのが唯一の救い。

4月も引き続き会食の予定が入っている。できるだけ控えめに(特にお酒)しようと思う。

仕事(定型業務)

2月の振り返りで考えていたスケジュールをメールで共有するという目標は達成。但し、チャットボットの形に持っていくところで躓いている。現状、予定表を共有して、各人がアップデートするやり方くらいしか、入力フローがない。これを、Teamsのチャット機能でできたら完成なのに。

Slackでは、ボットの名前を呼べば、最新の今日のスケジュールが表示される、というところまで出来上がったが、TeamsはOutgoing Webhookの設定がSlackのようにはいかないので、ここで行き詰まっている。

無駄遣い

マイナスになっちゃうかも!と思うほどに、使った。一番の無駄遣いは毎日のコーヒー(デカフ)。最近は、会社の帰りにカフェによって読書をしたり、JSの練習をしたりしている。場所代と思えばそうなのだけれど、どうにかして減らす方向に持っていきたい。

ジムの会費(増)

暖かくなってきたのだから、外で運動、という選択肢もある中、ジムの回数券を購入。10回分で5,000円。会社に行く前に30分走るだけだから、そこまで安くもないと思う。ただ、定期的に運動する予定を自分の時間割に入れるには、天候に左右されないジムの利用が必要なのだ、と自分に言い訳している。3月の後半から通いはじめて週2〜4回のペースで利用中。出張などで通える回数がまちまちなため、4月以降も回数券にする。

Audible(減)

とうとうやめた。ジムに通いはじめたこともあって最近は落語よりも、Spotifyの利用が多い。いつの間にかSpotifyの利用歴も8年超。最初の頃に比べるとずいぶんと日本の音楽も増えた印象。落語チャンネルが出来たらいいのに。

JSの会に参加(ー)

無料のJSイベントに参加した。グループワークでのコーディングだったけど、周りの人から教えてもらうことが多かった。自分の目的とイベントの内容が合うと、得した気分になる不思議。

4月は?

新年度のスタートともに、いろいろと挑戦し始めている。ジムはもちろんのこと、コーディングやプログラミングのイベントへの参加申し込み、ドイツ語の勉強の再開1。年度末の決算処理だったり、今後会社の重ためのイベントが増えていくタイミングで敢えてプライベートの予定を詰め込んでみた。何とかして効率的に働かないと、乗り切れないぞ、という自分へのプレッシャー。


  1. ドイツ語再開の記念にGWの弾丸ウィーン旅行を計画中。 ↩︎

【GAS】予定をMS Teamsのチャンネルに流してくれるBotを作ってみた

JavaScriptのイベントに参加する前に作っていたのだけど、時間がなくてブログにはまとめていなかったので、改めてまとめた。この出来事もあってJSのイベントに参加しようと思い立った。

引き継いで思った「本当に共有カレンダー1つで可能?」

数週間前に同じチームの同僚から「他のチームからもリクエストあるし、オフィスの全員が予定をチェックできるよう共通のカレンダーを作ろうと思う」という内容のメールをもらった。これは、私も何度も挑戦していたことだったので、「ぜひやってみたら良いよ。但し、以下の点は理解が誤っていると思うので、ITベンダに教えてもらうなどして認識を改めといてね」という返信をした。

その後、彼女は2週間病欠。他のチームからのリクエストということもあって、さすがに早く対応する必要あるんだろう、と思って、代わりに対応しておくことにした。

求められていること

  • PCだけでなく携帯からもアクセスできること
  • ボスを含めたスタッフの外出予定がわかること

私が入社したころ、うちの会社にはExchangeがなく、残念ながらスタッフがカレンダーの使い方を知らなかった。Office 365への移行を機に「カレンダー利用しようよ」と言い続けたものの浸透せず、という経緯がある。

同僚から相談メールをもらったときには、「彼女が管理するって言ってるし、やりたいようにしてもらえばいっか」と思っていたけど、代理で対応することになって考えたときに、彼女のプランで運用可能なのかやや疑問な部分が出てきた。(もしかすると大丈夫なのかもしれないけど。)

全員ではなくても、例えば5人だけでも同じ日・同時刻に休暇や外出予定が入ってしまったら、非常に見にくい。

「じゃ、カレンダーを分ければいいじゃん」という話になるのだけれど、そうすると、リクエストされたこととは少し異なる感じ。多分、いろんなカレンダーを使い分けるなんてことできない。

カレンダーを分けても、全体スケジュールを把握する方法は?

「もういい加減、Outlookの使い方とか勉強したら?」と思うけど、期待するのは無駄。私に課されたミッションは、他の人にとってできるだけ簡単な方法で全体の予定を通知すること。

多分、リクエストしてきたチームが求めているのは、こういうことなんだと思う。

今日の予定をまとめて教えてくれるslackの秘書BOT
Slack Bot:毎朝Googleカレンダーの予定を通知してくる秘書ねこBotの作り方

この方法なら、複数のカレンダーの内容を一回で通知可能。

実際に作ってみよう

基本的には、前述のサイトの方法でできあがる。

で、ここで少し欲張ってしまうところが私の悪いとこ。「どうせなら1ヶ月とか1週間の予定があった方が良くない?」とカスタマイズすることにしてみた。

使うカレンダー

  • 上司の予定
  • スタッフの外出・休暇予定
  • 本社・地域本社のイベント
  • 事務所のイベント
  • 〆切日(提出物など)
  • オフィスの休業日

そして作ったスクリプトが、以下。

カスタマイズしていて、つまづいた点

地味にちょこちょこ悩んだ。以下が時間がかかった部分。

イベント終了日

出張など日をまたぐ予定の終了日がきちんと表示されない!何とかなったと思ったら、今度は1日長い。(4月1日〜2日までの予定が、4月1日〜3日までと表示されてしまう。)

もっとスマートな書き方があるような気がしているけど、現時点ではここまでで諦めた。

表示のされ方(改行されない)

Slackでは\nで改行できるのに、なぜかMS Teamsでは改行されなかった。Markdownが使えるから、スペース2つで何とかなるかなと試してみたけど、できない。「なんで???」と発狂寸前だったけど、よくよく考えたら、「Headingを設定したら自動的に改行されんじゃん」と思って##を付け足してあっさり解決。

メール通知版も作ってみた

ここまでのことで、オフィス内の予定共有は完了。ただ、上司の管下の事務所は他にもある。「せっかくだからこれを利用しちゃおう」と思い立つ。ただ、この場合、MS Teamに新たにチームを作って、関係のある人達を招待して、という手順が必要。

面倒くさい。(あまりにもチームが乱立しすぎちゃう。。。)

ということで、彼らがどれだけMS Teamを利用しているかもわからないので、メール通知ということにした。上司のスケジュールや〆切日など関係ありそうなスケジュールだけでいい。

ちなみにメールはテキスト形式のメール。これで事足りるので、これ以上のことはしていない。

送信はOutlookのアドレスから

Gmailから送るのだけれど、受信者にもそれが表示されると今後誤ってGmailにメールを送ってくるような事態にもなりかねない。メールのやり取りはOutlookで統一しておきたいので、Outlookから送ったことにする。

Gmail側で、Outlookメールの設定が必要。

GmailからOutlookのメールアドレスで送信する

これで、Outlookで使用しているアドレスを送信者に設定すればよい。

今後改善が必要な部分

とりあえず、私の分かる範囲でみんなの予定を入れて作ったので、長期的な運用は、予定をポンポンと入力していってもらう必要がある。

Google CalendarとOutlookのカレンダーの同期が課題というよりは、入力の仕組みをシンプルにすることが重要。(Google Calendarへの登録は、MS Flowを使えばいい。)

このあたりも、ChatBotの仕組みを利用できないかと考えている。