本文へ移動
技術を、自社の仕事に。
判断と実行を助けるメディア

記事を検索

Chat APIで在席状況を自動切替 通知ミュートの条件

目次 · 7項目

資料作成や見積もりの計算に集中したい時間に、Google Chatの通知が次々に届く。カレンダーに「作業時間」を入れていても、Chatの表示は「オンライン」のまま。終わったら「通知をミュート」を戻し忘れて、急ぎの連絡を見落とす。こうした切り替えを、カレンダーの予定に合わせて自動で行えないかと考える人に向けた記事です。

Google Chat APIには、ユーザーの在席状況(availability)を扱う users.availability というリソースがあります。状態を「アクティブ」「退席中」「通知をミュート(Do Not Disturb)」に切り替える操作と、「資料作成中」のようなカスタムステータスを設定する操作がそろっています。Chat APIのリリースノートでは、2026年7月7日に一般提供(GA)として告知されました。この記事では、リリースノート、ガイド「Manage user availability for Chat apps」、各メソッドのリファレンス、Chat APIのDiscoveryドキュメント(APIの機械可読な定義。revision 20261013)をもとに、自動化の前に知っておきたい条件を整理します。

変えられるのは「自分の」状態だけ

最初に押さえておきたいのは、このAPIが扱えるのが認証したユーザー本人の状態だけだという点です。各メソッドの説明には、次の一文があります。

This method only updates the authenticated user’s availability.

読み取りの get も「認証したユーザーの在席状況だけを取得する」と書かれており、ガイドにも「認証したユーザーの在席状況だけを読み書きできる」とあります。リソース名の書式は users/{user}/availability で、users/me のほかメールアドレスやユーザーIDも書けますが、他の人の状態を読み書きできるわけではありません。チーム全員の在席状況を一覧にするダッシュボードや、管理者がメンバーの状態をまとめて変える用途には使えない前提で設計します。

認証はユーザー認証で、スコープは次の2つです。ガイドの前提条件には、Google Chatを使えるBusinessまたはEnterpriseのGoogle Workspaceアカウントが挙げられています。

  • chat.users.availability:在席状況の確認と変更
  • chat.users.availability.readonly:在席状況の確認のみ

4つの状態と、切り替えるメソッド

在席状況の state は、次の4つ(と未指定)です。いずれも出力専用で、直接書き込むのではなくメソッドで切り替えます。

状態定義の説明(要約)切り替えるメソッド
ACTIVE最近の操作にもとづきアクティブmarkAsActive(期限は任意。省略すると30分)
IDLEアクティブのあと、しばらく操作がない(APIからは指定しない)
AWAY退席中。操作がないと自動でなるほか、手動でも設定できるmarkAsAway
DO_NOT_DISTURB通知をミュート。手動で設定するmarkAsDoNotDisturb(期限は必須)

それぞれの決まりは、リファレンスでは次のように書かれています。

  • markAsDoNotDisturb:期限までミュートにする。期限は必須で、今からの長さ(ttl)か、絶対時刻(expireTime)のどちらかで指定する。期限は最大で1年先まで。期限が過ぎると退席中(Away)になる。「ミュート中は通常は通知が届かない」と説明されています
  • markAsAway:退席中にする。この方法で設定した退席中は、ユーザーが操作しても変わらない
  • markAsActive:期限までアクティブにする。期限は任意で、省略すると30分後に切れる。期限が来ると退席中になる。ただし、ユーザーがChatを使っている間は、アクティブが期限を過ぎて続くことがある

集中作業の自動化で使うのは、主に markAsDoNotDisturb です。期限が必須なので、ミュートのまま戻し忘れることは起きにくい作りです。ただし、期限が過ぎた後はアクティブではなく退席中になります。

Google Chat APIの在席状況(availability)の整理。markAsDoNotDisturbは期限(最大1年先)までミュート、markAsAwayは操作しても変わらない退席中、markAsActiveは期限が来ると退席中に戻る。カスタムステータスはpatchで変えられる唯一の項目で、文は64文字まで、絵文字はUnicodeのみ。どのメソッドも認証したユーザー本人の状態だけを扱う

カスタムステータスの決まり

在席状況のうち、patch で変更できるのはカスタムステータス(customStatus)だけです。updateMask も custom_status しか受け付けないと定義されています。カスタムステータスの項目は次のとおりです。

  • text(必須):ステータスの文。最大64文字
  • emoji(必須):絵文字。Unicodeの絵文字のみで、カスタム絵文字は使えない
  • ttl:期限までの長さ(入力専用)
  • expireTime:期限の時刻

「資料作成中(12時まで)」のように、戻る時刻を文に入れておくと、相手が返信を待つかどうかを判断しやすくなります。ガイドによると、カスタムステータスを消すときは、customStatus を省いて更新します。

カレンダーと連動させる例

ここからは編集部の提案です。Googleカレンダーに「集中作業」の予定を入れ、その開始時に、予定の終わりまでミュートとカスタムステータスを設定する形が考えられます。編集部では、Node.js向けの @googleapis/chat 51.2.0の型定義で次のコードを型チェックし、APIの送り先をローカルのスタブ(決まった応答を返す検証用のサーバー)に向けて実行しました。実際のGoogle Chatには接続していません。

import { chat_v1 } from "@googleapis/chat";

// 予定の終わり(endIso)までミュートにし、ステータスに一言を出す
export async function focusUntil(chat: chat_v1.Chat, endIso: string, text: string) {
  const name = "users/me/availability";
  await chat.users.availability.markAsDoNotDisturb({
    name,
    requestBody: { expireTime: endIso },
  });
  const { data } = await chat.users.availability.patch({
    name,
    updateMask: "custom_status",
    requestBody: {
      customStatus: { text, emoji: { unicode: "📝" }, expireTime: endIso },
    },
  });
  return data;
}

スタブに届いたリクエストは、POST /v1/users/me/availability:markAsDoNotDisturb(本文は expireTime)と、PATCH /v1/users/me/availability?updateMask=custom_status でした。

組み込む前に決めておきたい点は次の3つです。

  1. 本人の同意を取ってから動かす。 本人の状態を変えるため、本人が許可した範囲で、本人として認証して動かします。ドメイン全体の委任で全員分を一括で動かす使い方ができるかは確認していません
  2. 予定の変更・取り消しに追従する。 会議が早く終わった、予定が消えた、といったときに markAsActive で戻すかどうかを決めます。markAsActive は期限が来ると退席中になり、期限を省くと30分で切れる点に注意します
  3. 緊急連絡の経路を残す。 ミュート中は通常は通知が届かないため、障害対応などの連絡を電話など別の経路で受けられるようにしておきます。なお、アプリ認証で動くChatアプリは、受信者の通知設定やミュートを無視してプッシュ通知を届ける「強制通知」を送れます(2026年5月8日に一般提供)。社内の障害通知アプリにこの機能を使うかどうかも、あわせて検討できます

いつから使えるか

Chat APIのリリースノートでは、2026年7月7日に users.availability の5つのメソッドが一般提供(GA)として告知されています。同じ告知で、在席状況が変わったときにChatアプリが受け取れるイベント(Google Workspace Events APIの google.workspace.chat.availability.v1.updated)も案内されています。クライアントライブラリでは、Node.js向けの @googleapis/chat が8月3日公開の46.0.0から、Pythonクライアント(google-api-python-client)に同梱された定義がrevision 20260809から対応しています。

Chat APIのほかの新しい機能は、メッセージ検索とピン留め、スペースの自動作成で紹介しています。Chatアプリを社内で許可・停止する管理者側の設定は、Chatアプリは「アクセスの取り消し」では止まらないを参考にしてください。

確認した範囲

2026年10月17日に、Google Chat APIのDiscoveryドキュメント(revision 20261013)を取得し、users.availability の5つのメソッドと、Availability・CustomStatus・DoNotDisturbMetadata・各リクエストの定義を原文で確認しました。加わった時期は、npmの @googleapis/chat 45.0.0・46.0.0の型定義と、google-api-python-client 2.198.0・2.199.0に同梱された定義を比べて確かめました(資料調査)。あわせて、@googleapis/chat 51.2.0でコード例の型チェックと、ローカルのスタブに向けた実行を行いました。2026年10月19日に、Chat APIのリリースノート、ガイド「Manage user availability for Chat apps」、users.availability と各メソッドのリファレンスを開き、一般提供の日付、期限の必須・任意と既定値、期限後の状態、前提となるアカウントを確かめて本文に反映しました。実際のChatでの表示や通知の止まり方は試していません。

Google ChatやGoogleカレンダーを使った業務の自動化は、IT・Google Workspace 無料相談からお問い合わせください。

参考資料

この記事を共有XFacebook
鈴木 翔

技術の可能性に魅了され、学生時代からプログラミングとデジタルアートの分野に深い関心を持つ

この記事のテーマを、自社の次の一歩へ

自社に合う、Workspaceの進め方を。

移行するデータ、共有ルール、管理体制を整理し、導入から日々の運用までの進め方を考えます。

  • 移行と初期設定
  • 共有・権限の整理
  • 管理体制
Workspaceの導入・運用を相談する

構想段階からご相談いただけます。この記事の情報を相談フォームに引き継ぎます。

最新記事をメールで受け取る