無駄ロボット研究所

嫌な飲み会の誘いは偽の予定で撃退 ~無念! お誘いお断りロボの巻

『無駄ロボット研究所』ではRPA(Robotic Process Automation)ツール「UiPath Studio」を使って役に立たない、無駄なロボットを作っていきます。業務を効率化するという本来RPAで実現すべき目的とは真逆のロボットたちをお楽しみください。

 今日は、まっすぐ家に返りたい……。そんなときに限って、お誘いのメールが来て、どう返事をしようかと悩むことはありませんか? そんなときは、真っ先に、このロボットを起動してください。Google カレンダーにロボットが自動的に予定を入れてくれるので、いつの間にか入っていた予定を理由に、一切うしろめたさなく誘いを断ることができますよ。

『予定があればいいのに』

 Google カレンダーを開くときに、『お願い、予定入っていて!』と、祈ることはありませんか?

 もう、そんな運任せとは、さよならです。

 このロボットを起動すると、今日の夜、20:00~22:00に“テレビ会議”という予定が自動的に登録されます。

 身に覚えがありませんか? そんなことはどうでもいいのです。

 とにかくあなたは、まっすぐ自宅に帰り、20:00からのテレビ会議に参加する必要があるのです。

 後ろめたさなんて感じることなく、誘いを断ってテレビ会議に備えましょう。もしかすると、ミーティングのコールはないかもしれません。でも、仕方ありません。予定が入っていたのですから、あなたはGoogle カレンダーの予定に従っただけなのです。

GSuiteと連携させる

 さて、ロボットを作っていきましょう。

 今回のロボットのポイントは、Google カレンダーとの連携になります。「UiPath Studio」は、ブラウザー経由でWebサービスを操作することもできるので、Google カレンダーのWebページを開いて、日付をクリックして……、と地道に操作することもできますが、“UiPath.GSuite.Activities”パッケージを追加することで、GmailやGoogle カレンダーを簡単に操作できるようになります。

APIの有効化

 Googleアカウントで“Calendar API”を有効化します。“Google APIs”のサイトにアクセスし、サインイン後、[ライブラリ]で“Google Calendar”で検索し、APIを有効化します。

OAuth同意画面の設定

 続いて、APIにアクセスするための情報を取得します。同じく、“Google APIs”のサイトの[認証情報]画面で[OAuth同意画面]タブを開き、アプリケーション名に“UiPathRobot”など任意の名前を設定して保存します。

OAuthクライアントIDの作成

 [認証情報]画面に戻り、[認証情報を作成]から“OAuthクライアントID”を選択して、新しく作成します。

 アプリケーションの種類で、“その他”を選択し、名前に“UiPath”と設定します。これで、「UiPath Studio」からアクセスするときに必要な“クライアント ID”と“クライアント シークレット”が発行されます。

その他を選択
“クライアント ID”と“クライアント シークレット”

GSuiteパッケージの追加

 「UiPath Studio」には、標準ではGSuiteと連携するためのアクティビティは登録されてません。このため、パッケージを追加する必要があります。

 [パッケージを管理]から[すべてのパッケージ]を選択した状態で“GSuite”を検索すると、“UiPath.GSuite.Activities”が表示されるので、これをインストールしておきます(“UiPath Go!”からダウンロードして追加することもできる)。

日時を生成

 さあ、ロボットを作っていきましょう。まずは、登録する日付を生成します。ロボットを実行した当日の20:00~22:00にスケジュールを登録したいので、この日付を生成します。

 [代入]アクティビティを配置し、次の2つの変数に日付を設定します(いずれも左辺では[Ctrl]+[K]キーで変数を作成すること)。

dtStart = DateTime.ParseExact(dtStart.now.ToString("MM/dd/yyyy 20:00"),"MM/dd/yyyy HH:mm",Nothing)
dtEnd = DateTime.ParseExact(dtStart.now.ToString("MM/dd/yyyy 22:00"),"MM/dd/yyyy HH:mm",Nothing)

 少々長いのですが、後述するGSuiteアクティビティにDateTime型で値を渡すために“DateTime.PerseExact”を使って、日付の文字列を変換しています。日付の値は“.now”で取得していますが、受け渡す値は“05/24/2019”のように“月/日/年”の形式である必要があるので、この形式に変換してから、DateTime型にしています。

 なお、“20:00”や“22:00”の部分を書き換えれば、任意の時間に変更できます。

GSuiteアプリケーションスコープ

 GSuiteに関する操作を記述する際は、まず、このアクティビティを配置します。配置後、プロパティパネルで、“Google APIs”から取得した“クライアント ID”と“クライアント シークレット”を入力します。

認証情報を入力する

予定を作成

 Google カレンダーに対する操作は、“予定を作成”・“予定を削除”・“予定を変更”・“予定を検索”・“参加者を追加”があります。ここでは、予定を追加したいので、“予定を作成”を配置します。

 [タイトル]に“"テレビ会議"”、[開始時刻]に“dtStart”、[終了時刻]に“dtEnd”を指定し、タイムゾーンを“"Asia/Tokyo"”に設定します。

ユーザー認証

 これでロボットは完成ですが、初回は認証が必要です。実行すると、ユーザー認証と権限付与の画面が表示されます。予定を登録したいアカウントでサインインし、Google カレンダーへの権限を許可します。

 もちろん、次回以降は、何も表示されずに予定が追加されるので、たとえば、デスクの近くで直接お誘いがあっても安心です。ロボットはひっそりと予定を追加しますので、実行後に、何食わぬ顔でGoogle カレンダーを開けば、そこに予定が登録されています。

 これで、もう、いつ誘われても安心ですね。