2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Google Workspace Studioを使って日々のちょっと面倒な作業をノーコードで自動化してみよう

Posted at

12/12現在、Workspace Studioを使ってWebhookの送信ができなくなっています。
Workspace Studioからスプレッドシートを更新し、そこからGASでSlackに投稿するという回避策がありますが、ノーコードで通知が作れるありがたみは薄れてしまっています。
GASでSlackに投稿する方法は以下の記事を参考にしてください。
https://ex-ture.com/blog/2023/07/27/google-app-script-gas-slack/

※12/13現在、Geminiを使うステップが「We are at capacity, we'll be back soon」というエラーで停止してしまう状況です。再開を待つしかなさそうです。
01_Gemini呼び出しエラー.png

はじめに

このエントリーはエンジニア転職のLAPRAS/エンジニア採用のLAPRAS SCOUTを提供する、LAPRASのアドベントカレンダーの3日目のエントリーです!

2025年11月にGoogle Workspace Flows(現Google Workspace Studio)が出て、ノーコードでGoogle Workspaceのサービス同士を繋いだワークフローを組めるようになりました。
Geminiも組み込めるということで、日々の業務を少し楽にするようなワークフローを誰でも簡単に作れるようになりました。

Geminiに話しかけてワークフローを作ってもらおう

Workspace Studioの新しい点として、Geminiに文章で伝えればワークフローを構築してくれる機能が挙げられます。そこで、まずは自然言語でワークフローの作成を依頼してみました。
(ゼロからステップを指定して作成することももちろん可能です。)

「朝9時に、受信メールを予約して、特に対応が必要そうなメールがあればSlackに通知してほしい」と入力し、「Create」を押してみます。
02_ワークフローを自動生成.png

数秒待つだけでワークフローが生成されましたが、ワークフローの開始日が過去になっているなど、意図と違うところがあるので、人間の手で修正を加えていきます。
組み込まれていた「Ask Gemini」ステップの内容が「24時間以内の未読メールを要約」となっており、意図(未読既読問わず要約してほしい)と異なっています。

03_意図と違う自動生成.png

第2版を作ってもらう

以下の要件で、再度Geminiにゼロからワークフローを考えてもらうことにしました。

朝9時に、以下の内容をSlackに送信してほしいです。

  • 「受信トレイ」の全てのメールの要約
  • 特に対応が必要そうなメールがあれば、1件ずつ以下の情報を教えてください。
    • 差出人名
    • メールアドレス
    • 受信日
    • 件名
    • 内容の要約

この依頼を元にGeminiが作ってくれたのが以下のワークフローです。
04_生成されたワークフロー1.png
05_生成されたワークフロー2.png

あとはSlackに通知するステップが必要なので付け足します。

06_Slack通知ステップの追加.png

SlackのWebhook作成は以下の記事を見ながら実装しました。
https://qiita.com/miriwo/items/cbb4b37b3f5abecc835f

「Test run」のボタンを押して実行してみると、文章は読みづらいですが、実際にSlackにメール要約を投稿することができました。

07_Slackに届いたメール要約.png

フィードバックを受け付けられるようにする

重要なメールは1通ずつお知らせしてほしいという要件で作ってみましたが、「何が重要なメールか」を私がフィードバックする手段がないと、「そのメールは別に重要じゃないんだけどな…」という通知が続いて、結局見なくなりそうなので、フィードバックの仕組みを構築してみることにしました。

メールの要約がSlackに投稿された後、自分がそれを見て「このメールは別に要対応じゃないから今後はピックアップ不要」などとフィードバックできるようにします。

人間の作業はSlack内で完結するようにしたいので、Googleスプレッドシートの内容をGeminiに読み込ませることができるという特性を活かし、以下のように設計しました。

  1. Slackワークフローを作る
    Workspace StudioからのSlack通知に含まれる特定のキーワードをトリガーに発動するSlackワークフローを作成し、フィードバックを受け付けるフォームを起動できるようにする。
    フォームで回答された内容をスプレッドシートに蓄積する。
  2. Workspace Studioのワークフローに組み込む
    スプレッドシートのフィードバック内容をGeminiに読み込ませ、これを「対応不要なメールの対象」としてまとめたプロンプトを生成する。
    生成されたプロンプトをメール要約ステップに組み込み、除外条件として利用する。

Slackワークフローの作成

まずSlackのワークフローを作ります。
「朝のメール要約だよ」というキーワードが含まれていたら発動するようにします。
08_Slackワークフローの発動条件.png

次に、フィードバックを受け付けるフォームを設置します。
09_Slackワークフローでフィードバックを受け付けるフォーム.png

フォームで回答した内容をスプレッドシートに追加します。

10_収集したフィードバックをスプレッドシートに貯める.png

これでSlackワークフローが完成しました。
11_完成したSlackワークフロー.png

Workspace Studioのワークフローに組み込む

次に、ワークフロー側でフィードバックを受け取って要約に反映するように実装します。

まずはスプレッドシートを読み込みます。
12_Studioでスプレッドシートの内容を取得.png

読み込んだスプレッドシートに記載されたフィードバックをGeminiに読み込ませ、フィードバックをまとめたプロンプトを生成します。
13_フィードバックまとめプロンプト.png

以下のフィードバックを元に、「受信トレイ」のメールを要約する際に無視して良いメールの対象についてまとめてください。

今生成したプロンプトを除外条件として利用し、メールを要約します。
14_メール要約プロンプト.png

私のGmailの「受信トレイ」にあるメールを、既読未読問わず、500文字程度で簡潔に要約してください。
更に、特に対応が必要と思われるメールを特定してください。その際、過去のフィードバック(以下のプロンプト)を考慮し、「対応不要」とされた種類のメールは除外してください。​
(ここにプロンプト)​
特定された各メールについて、差出人名、メールアドレス、受信日、件名、内容の要約を抽出してください。

プロンプトを2段階に分けるのは、メール要約のプロンプトに直接フィードバックスプシを読み込ませると、フィードバックがどんどん溜まってきた時にメール要約用のプロンプトが長くなりすぎて、本来の命令文に正しく対応されないことを懸念したためです。

最後に、「朝のメール要約だよ」という文言を頭につけてSlack通知するようにします。

これで一連の流れが実装できました。

フィードバックサイクルが回るようになった

フィードバックを試しに1つ書いておきます。
15_フィードバック例.png

ここまで実装できたので、Workspace Studioのワークフローを「Test run」してみます。
すると、フィードバックに基づいて要約が生成されました。
また、フィードバックを受け付けるSlackワークフローが動き、実際にフィードバックを記載できるようになりました。
16_フィードバックワークフローが起動した様子.png

プロンプトのブラッシュアップ

Geminiの応答には、挨拶やワークフローのプロセス説明など、不要な文章が多く含まれています。そこで、プロンプトをブラッシュアップすることにしました。
Slackへの通知を都度挟むと試行に時間がかかるため、ブラウザでGeminiを開き、プロンプトを直接貼り付けて対話しながら改善を進めました。

プロンプトの改善自体もGeminiに依頼します。

先ほど私が伝えた内容に対するあなたの返事はやや冗長です。
不要な箇所を伝えますので、そのような不要な文章を生成しないためにはどのようなプロンプトにすれば良いか考えて、プロンプトを送ってください。
不要な箇所:
(省略)

こうして、不要な文章を生成しないプロンプトを作成してもらいました。

完成したプロンプト1(フィードバックまとめプロンプト):

このスプレッドシートの中身だけを参照して回答してください。
「フィードバック」シートの「フィードバック」テーブルの「フィードバック」列にある文章は、「受信トレイ」のメールを要約する際に無視して良いメールについて記載されています。
除外対象についてまとめ、Geminiに指示を出す際に利用できるプロンプトにしてください。

【要約・出力に関するルール】

  1. 出力開始: 指示に対する返答、プロセスなどに関する前置きの文章はすべて省略し、直接次の文章から開始してください。「【除外対象プロンプト】以下の条件に一つでも該当するメールは重要度が低いと見なして、要約から除外してください。 」から開始してください。
    2.除外対象: 除外対象となるメールの種類を簡潔に記載してください。

完成したプロンプト2(メール要約プロンプト):

私のGmailの「受信トレイ」にあるメールを、既読未読問わず、500文字程度で簡潔に要約してください。

【要約・出力に関するルール】

  1. 除外対象: (ここにプロンプト1の出力結果を挿入)
  2. 出力開始: プロセスや除外条件に関する前置きの文章はすべて省略し、直接「受信トレイの概要」から開始してください。
  3. セクションタイトル: 概要セクションのタイトルは「受信トレイの概要」としてください(文字数制限の表記は不要)。
  4. 対応が必要なメールの特定: 概要の後に、「特に対応が必要と思われるメール」のセクションを設けてください。
  5. 対応不要の場合の記載: 対応が必要なメールがない場合、そのセクションには**「特にありません」**とだけ記載してください(理由や経緯の説明は一切不要)。
  6. 特定されたメールの形式: 対応が必要なメールがある場合、特定された各メールについて、以下の情報を抽出して表形式で示してください。
    • 受信日
    • 差出人名
    • メールアドレス
    • 件名
    • 内容の要約

おわりに

このように、ノーコードでGoogle Workspaceのサービス同士を繋ぎ、日々の仕事を楽にするワークフローを簡単に作ることができました。
エンジニア以外のメンバーでも実装できるのは非常に便利だと思います。
ぜひ作ってみてください。

※12/12現在、SlackにWebhookで通知するステップやGeminiに質問するステップは使えず、回避するにはGASを組むなどしなくてはいけない状況です。
こうなるとあまりWorkspace Studioを使う旨味がないので、復活を待っている状況です…。
(アドベントカレンダーを推敲しているうちに機を逃して歯噛みしているところです)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?