9月1日の朝、Google スプレッドシートを開いて canvas を探しました。ありません。メニューを一通り見て、別のスプレッドシートでも試して、それでも見当たりません。
前日の8月31日に「展開開始」と告知されたばかりの機能です。私はここで15分ほど、管理コンソールの設定を疑って触りかけました。結果から言えば、触らなくて正解でした。出ていないのは正常な状態だったからです。
個人開発の体制だと管理者も利用者も自分ひとりなので、設定を疑う先も自分しかありません。だから手が動きます。同じ判断を毎回15分かけて繰り返すのが嫌になったので、待つべき期間を数えるだけの小さな仕組みを作りました。作ってから振り返ると、時間を溶かしていた原因は知識不足ではなく、「出ていない」という同じ症状が展開ペースによって正反対の意味になることを、その場で思い出せないことでした。
「提供開始」が指しているのは、展開の開始日です
Workspace の機能告知には、混ざりやすい3種類の情報が並んでいます。この3つを分けて読めるかどうかが、そのまま切り分けの精度になります。
ひとつめが対象エディションです。自分の契約プランが並んでいなければ、待っても永久に来ません。
ふたつめがリリーストラックです。ドメインは Rapid Release と Scheduled Release のどちらかに設定されていて、告知にはそれぞれの展開開始日が別々に書かれています。Scheduled Release への展開は、Rapid Release から2週間ほど遅れて始まるのが通例です。同じ告知を読んでいても、自分のドメインに関係する日付は片方だけです。
みっつめが展開ペースです。開始日から全ユーザーに行き渡るまでの幅を示すもので、告知では次の3種類のいずれかが書かれています。
| 展開ペース | 告知での書かれ方 | 開始日からの目安 |
|---|---|---|
| Full rollout | 1〜3日で機能が見えるようになる | 3日 |
| Gradual rollout | 最大15日かけて機能が見えるようになる | 15日 |
| Extended rollout | 15日を超える可能性がある | 30日以上 |
Sheets の canvas は Scheduled Release ドメイン向けに8月31日から最大15日かけて展開されます。つまり9月1日時点で見えていないのは、まったく異常ではありません。
もうひとつ覚えておくと安心なのが、展開がユーザー単位で進むという点です。同じ組織の同僚には出ていて自分には出ていない、という状態は展開途中では普通に起きます。ここで「自分のアカウントだけ壊れている」と考えると、設定をいじって別の問題を作り込むことになります。私が15分止まったのも、まさにこの手前でした。
待ちと不具合を切り分ける5つの確認
順序が大事です。上から順に見て、どこかで止まればそこが原因です。
- 対象エディション — 告知の対象プラン一覧に自分の契約が含まれているかを確認します。含まれていなければ、ここで終わりです。
- 自分のドメインのリリーストラック — 管理コンソールで確認します。メニュー名は改定されることがあるので、管理コンソール上部の検索窓に「リリース」と入力して該当設定へ飛ぶのが確実です。個人の Google アカウントで Workspace 向け機能を待っている場合は、そもそも対象外という可能性もここで判明します。
- 自分のトラックの展開開始日 — Rapid と Scheduled で日付が違います。告知の該当する側だけを見ます。
- 管理者側のスイッチ — 該当アプリのオン・オフ、アルファ機能や追加サービスの設定、そして DLP やラベルによるデータアクセス制限です。Gemini からデータが見えないように制限をかけていると、機能そのものは来ているのに空振りして見えることがあります。Drive 側で何を制限すると Gemini の見え方がどう変わるかは、Drive を Gemini に見せたくないなら、共有を解除する前に試せる設定がありますで整理しました。
- ユーザー側の条件 — 表示言語、職場アカウントで開けているか、一度サインアウトして入り直したか。ここまで来て初めて、キャッシュやブラウザ拡張を疑う段階になります。
1から3で「まだ期限内」と分かったなら、4と5には手を付けません。展開待ちの機能を探して設定を変えると、あとで機能が届いたときに原因の分からない不具合として跳ね返ってきます。
待機期限を自動で出す台帳を置く
とはいえ、告知を読むたびに開始日と展開ペースを頭で数えるのは続きません。スプレッドシートに3列だけ入力して、判定期限と残り日数を自動で埋める形にしました。
シート名を rollout にして、A列に機能名、B列に自分のトラックの展開開始日、C列に展開ペースを入れます。D列以降はスクリプトが書き込みます。
// Workspace ロールアウト台帳
// A=機能名 / B=自分のトラックの展開開始日(YYYY-MM-DD) / C=pace(full|gradual|extended)
// D=判定期限(自動) / E=残り日数(自動) / F=判定(自動)
const PACE_DAYS = { full: 3, gradual: 15, extended: 30 };
const SHEET_NAME = 'rollout';
function updateRolloutLedger() {
const sheet = SpreadsheetApp.getActive().getSheetByName(SHEET_NAME);
if (!sheet) {
throw new Error('シート「' + SHEET_NAME + '」が見つかりません');
}
const lastRow = sheet.getLastRow();
if (lastRow < 2) return; // 見出し行だけなら何もしない
const rows = sheet.getRange(2, 1, lastRow - 1, 3).getValues();
const today = truncateToDay(new Date());
const out = [];
for (const [name, rawStart, rawPace] of rows) {
if (!name) {
out.push(['', '', '']); // 空行はそのまま残す
continue;
}
const start = parseDate(rawStart);
const pace = String(rawPace || '').trim().toLowerCase();
const span = PACE_DAYS[pace];
if (!start || span === undefined) {
// 空欄で返すと「まだ計算していない行」と区別が付かなくなる
out.push(['', '', '入力を確認']);
continue;
}
const deadline = addDays(start, span);
const remain = Math.round((deadline - today) / 86400000);
out.push([deadline, remain, remain >= 0 ? '待ち' : '調査']);
}
sheet.getRange(2, 4, out.length, 3).setValues(out);
sheet.getRange(2, 4, out.length, 1).setNumberFormat('yyyy-mm-dd');
}
// 文字列と Date の両方を受ける。読めない値は null を返して呼び出し側で分岐させる
function parseDate(value) {
if (value instanceof Date) return truncateToDay(value);
const m = String(value || '').match(/^(\d{4})-(\d{2})-(\d{2})$/);
if (!m) return null;
return new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));
}
// 時刻を落として日付だけにする。ここを省くと残り日数が実行時刻で揺れる
function truncateToDay(d) {
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
}
function addDays(d, n) {
return new Date(d.getFullYear(), d.getMonth(), d.getDate() + n);
}エディタから updateRolloutLedger を一度実行して権限を承認したあと、トリガーで1日1回動かしています。朝にシートを開けば、判定が「調査」に変わった行だけを見ればよくなります。
truncateToDay は省きたくなる関数ですが、これを外すと残り日数が実行時刻によって1日ぶれます。日付だけを扱いたいときに時刻を残しておく理由はありません。
判定ロジックを流して分かったこと
書いたロジックを、実際の告知から拾った日付で流してみました。基準日は2026年9月1日です。
| 機能 | 展開開始日 | ペース | 判定期限 | 残り | 判定 |
|---|---|---|---|---|---|
| Sheets canvas(Scheduled) | 2026-08-31 | gradual | 2026-09-15 | 14日 | 待ち |
| Meet ハードウェアのメモ操作 | 2026-08-31 | gradual | 2026-09-15 | 14日 | 待ち |
| Ask Gemini in Chat | 2026-08-26 | full | 2026-08-29 | -3日 | 調査 |
| ペース未入力の行 | 2026-08-01 | (空欄) | — | — | 入力を確認 |
並べて初めて腑に落ちたことがあります。同じ「出てこない」でも、full rollout の機能とそうでない機能では意味が正反対になります。
Ask Gemini in Chat のように1〜3日で行き渡る告知なら、1週間経って見えないのは待ちではなく調査対象です。逆に gradual の機能を3日で疑いにいくのは、単に早すぎます。私が canvas で設定を触りかけたのは、この区別を意識せずに「もう出ているはずだ」と感じたからでした。感覚は展開ペースを勘定に入れてくれません。
もうひとつ、境界日の扱いも実際に流して決めました。判定期限の当日は「待ち」、翌日から「調査」です。期限当日に切り替わる作りにすると、最後の1日ぶんの猶予を自分から捨てることになります。
入力が読めない行を空欄ではなく「入力を確認」で返すようにしたのも、流してみたあとの修正です。空欄のままだと、まだスクリプトが走っていない行なのか、日付の書式が違って弾かれた行なのかが見分けられませんでした。和暦や 2026/8/1 形式を入れた行が黙って空欄になったとき、原因を探して余計な時間を使いました。
期限を過ぎたら、何を書いて問い合わせるか
判定が「調査」に変わり、5つの確認も通過してなお見えない場合は、管理者や販売パートナーへ問い合わせる段階です。このとき「使えません」とだけ書くと往復が増えます。手元にある情報を最初に全部渡したほうが速く終わります。
- 告知ページの URL と告知日
- 自分のドメインのリリーストラック(Rapid か Scheduled か)
- そのトラックの展開開始日と、そこからの経過日数
- 契約エディション
- 確認済みの管理者設定(該当アプリのオン・オフ、DLP やラベルの制限の有無)
- 再現手順と、実際の画面のスクリーンショット
上の台帳を作っておくと、このうち2番目から4番目までがそのままコピーできます。問い合わせのために調べ直す作業が消えるのは、思っていたより効きました。
なお canvas が届いたあと、どこまでを canvas に移してどこから先を Apps Script に残すかについては、Sheets canvas へ移せるのは入口までで、実行境界は Apps Script に残りますで判断の基準を書いています。待っている間に読んでおくと、届いた日に迷わずに済みます。
まとめ
次に「告知された機能が出てこない」と思ったら、設定を触る前に告知ページへ戻って、自分のトラックの展開開始日と展開ペースの2つだけを確認してみてください。この2つが分かれば、待つのか調べるのかはその場で決まります。
台帳まで作るかどうかは、待っている機能の数次第だと思います。私自身は、月に何本も追いかける状態になってから作りました。お読みいただきありがとうございました。