毎月末に同じ作業をしていませんか。スプレッドシートのデータを並び替えて、重複を消して、集計表を作り直して……。そのルーティン、Claude in Chrome と Apps Script の組み合わせで大幅に短縮できます。
私自身、複数サイトの GA4 データをシートに集めて月次レポートを作る作業に毎回 30〜40 分かかっていました。それが今では Claude に Apps Script を書いてもらうことで 5 分以内に終わるようになっています。
Apps Script と Claude in Chrome がなぜ相性がいいのか
Google スプレッドシートには「Apps Script」という JavaScript ベースの自動化機能が内蔵されています。マクロを記録する感覚に近いのですが、より柔軟な処理が書けます。ただ、コードを自分で書くのは初心者には少し敷居が高い。
そこで Claude in Chrome の出番です。スプレッドシートを開いた状態でサイドパネルから Claude に「このシートの重複行を削除するスクリプトを書いて」と依頼するだけで、そのまま実行可能なコードが返ってきます。コードの意味が分からなくても、Claude が「このコードは何をするか」を日本語で説明してくれるので安心して使えます。
実際の手順:スクリプトを作って実行するまで
まず Claude in Chrome の拡張機能をインストールして、Google スプレッドシートを開きます。右側のパネルで Claude を起動し、シートの状態を説明しながら依頼します。
ポイント: シートの列名と何を自動化したいかを具体的に伝えると、精度が上がります。「A列に日付、B列に商品名、C列に売上金額が入っていて、B列の重複を削除したい」のように伝えましょう。
Claude が生成したコードを受け取ったら、スプレッドシートの「拡張機能 → Apps Script」から新しいスクリプトを作成し、貼り付けて実行します。
// 重複行を削除するスクリプト(B列を基準にする例)
// Claudeが生成するコードはこのような形式になります
function removeDuplicates() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getDataRange().getValues();
const seen = new Set();
const result = [];
// 1行目(ヘッダー)は必ず保持する
result.push(data[0]);
for (let i = 1; i < data.length; i++) {
const key = data[i][1]; // B列(インデックス1)を重複判定の基準とする
if (!seen.has(key)) {
seen.add(key);
result.push(data[i]);
}
}
// 元のデータを消去して、重複を除いたデータで上書き
sheet.clearContents();
sheet.getRange(1, 1, result.length, result[0].length).setValues(result);
SpreadsheetApp.getUi().alert(`完了しました。${data.length - result.length} 行を削除しました。`);
}初回実行時は Google アカウントへの権限許可が求められます。「このアプリは Google が確認していません」という画面が出ますが、自分で作ったスクリプトなので「詳細 → 〈プロジェクト名〉(安全でないページ)に移動」を選んで進めて問題ありません。
実践例1:月次データの自動集計
毎月の売上データが日次でシートに蓄積されているとします。月ごとの合計を別シートに自動転記したい場合、Claude にこう依頼します。
「Sheet1 の A 列に日付(YYYY/MM/DD 形式)、B 列に売上金額が入っています。月ごとの合計を計算して Sheet2 に転記するスクリプトを書いてください」
Claude は SUMIFS 関数を使ったアプローチやループ処理を含むスクリプトを状況に応じて提案してくれます。月が増えても自動的に行が追加されるように書いてもらうのがコツです。
実践例2:条件に応じた自動ハイライト
「売上が前月比で 20% 以上下がった行を赤くしたい」のような条件付き書式も、自然言語で依頼できます。
// 前月比較でハイライトする例(Claudeへの依頼から生成)
function highlightDeclines() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
for (let i = 3; i <= lastRow; i++) { // 3行目からデータ開始と仮定
const current = sheet.getRange(i, 3).getValue(); // C列: 今月売上
const previous = sheet.getRange(i, 2).getValue(); // B列: 先月売上
if (previous > 0 && (current - previous) / previous < -0.2) {
// 20%以上減少した行を薄赤でハイライト
sheet.getRange(i, 1, 1, sheet.getLastColumn())
.setBackground('#FFCCCC');
} else {
sheet.getRange(i, 1, 1, sheet.getLastColumn())
.setBackground(null); // ハイライト解除
}
}
}コードを実行する前に「このスクリプトで何が起きるか、日本語で説明してください」と Claude に確認してもらう癖をつけると、予期しない上書きを防げます。
制限と注意点
Apps Script には一回あたりの実行時間が 6 分 という制限があります。大量データ(数万行以上)を処理する場合、タイムアウトで途中終了することがあります。その際は Claude に「6 分の制限に対応するため、バッチ処理に分割するコードに書き直してください」と頼むと解決策を提案してくれます。
また、外部サービス(メール送信・外部 API 呼び出し)を含むスクリプトはより広い権限が必要になります。Claude は権限スコープの説明もしてくれますが、不明な場合は「このスクリプトが要求する権限と、その理由を教えてください」と質問してみてください。
Cowork の自動化をさらに深めたい場合は、Cowork スキル×スケジュール活用の設計パターン や Cowork で Gmail を自動管理する実践ガイド も参考になります。
全体を振り返って:今日から試せる最初の一歩
難しく考えず、まずは「毎月手動でやっている単純なシート操作」を Claude に話しかけてみてください。「このシートの空白行をまとめて削除したい」でも「特定のキーワードが含まれる行だけ別シートに移したい」でも構いません。
Apps Script のコードが分からなくても、Claude が生成から説明まで一緒に進めてくれます。最初の一本を動かせたら、次のアイデアは自然と浮かんでくるはずです。