# プログラミング 作品 アイデア12選｜スプレッドシートから始める

URL: https://formula.dog/ja/journal/programming-sakuhin-ideas-spreadsheet
Type: blog
Locale: ja
Published: 2026-10-24
Updated: 2026-10-26

---

> 毎朝開いているスプレッドシートから作れる12のプログラミング作品。初心者向けから上級者向けまで、言語とバージョンの選び方もあわせて解説します。

スプレッドシートを毎朝開いているなら、それはもうプログラミングの題材です。プログラミング 作品 アイデアを探しているなら、まず手元のシートから始めてみてください。メールを送ってくれる追跡表、勝手に整う表、更新を待たなくていいダッシュボード。どれも実際に作れる作品で、必要なデータはすでにシートの中にあります。以下では、「午後ひとつ」で終わるものから「週末ひとつ」かかるものまで、私が作った、または同僚が作るのを見てきた12の例を紹介します。

## ToDoアプリより自分のスプレッドシートが良い理由

ほとんどのアイデア一覧は同じ5つを挙げます。ToDoアプリ、電卓、天気ウィジェットです。悪くはありません。ただ、結果を誰も必要としないので退屈です。

スプレッドシートの作品は、現実の面倒ごとから始まります。毎週金曜に同じ数字を同じ列へコピーしている。承認をメールで一件ずつ催促している。毎月同じレポートを作り直している。面倒ごとが本物なら、最初の利用者はあなた自身なので、最後まで作り切れます。

理由はもう一つあります。スプレッドシートには、画面、データベース、共有の仕組みが最初から揃っています。多くの初心者プロジェクトをつまずかせる環境構築を飛ばして、すぐロジックに集中できます。

## どの言語をどのシートに使うか？

流行りではなく、ファイルの置き場所で道具を選びましょう。

- 
**Google スプレッドシート:** Google Apps Script（JavaScript）。メール送信、メニュー、トリガー、フォームの連携に向いています。

- 
**Excel 365:** Office スクリプトまたは Excel の Python 機能。データ整形、集計、グラフに向いています。

- 
**古いデスクトップ版 Excel（2016、2019）:** VBA。ファイルをノートパソコンの外に出さないマクロに向いています。

- 
**どちらでも:** LAMBDA と名前付き関数を使った数式。スクリプトなしで再利用できるロジックを作れます。

バージョンには注意してください。Excel の Python 機能と LAMBDA には Excel 365 が必要です。Apps Script はスプレッドシートだけ、VBA はデスクトップ版 Excel だけで動きます。会社の制限が厳しいPCなら、アイデアに惚れ込む前に確認しましょう。

コードを書いたことがないなら、Apps Script から始めるのがおすすめです。JavaScript ですが、入口が優しくできています。「拡張機能」から「Apps Script」を開けば、そのシートに紐づいたエディタがすぐ使えます。

![打ち込む手元のキーボードと、モニターに光るスプレッドシートとスクリプトのサイドバー](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-10/ac6b8f-img1.webp)

## 初心者向けの作品アイデア（午後ひとつ分）

どれも20〜60行ほどのコードで作れます。この順番で試すのがおすすめです。

**1. 掃除を実行するカスタムメニュー。** 余分な空白を消し、大文字と小文字をそろえ、空行を削除する関数を書きます。それを `onOpen` でメニューに追加します。関数、範囲、メニューの仕組みを一度に学べます。人が本当に使い続ける最初のスクリプトになりやすいです。

**2. 月次サマリーシート。** 生データのタブから値を読み取り、カテゴリごとに合計して、別のタブに書き出します。SUMIF を遠回りして書くようなものですが、それがポイントです。数式が裏で何をしていたかが見えます。すでにピボットテーブルを使いこなしているなら飛ばして構いません。学ぶのは結果ではなく繰り返しの仕組みです。

**3. 誕生日や更新期限のリマインダー。** 日付の一覧を置き、毎日実行されるトリガーで、一週間以内に迫った項目をメールで知らせます。Apps Script のトリガーは多くの人にとって「あ、これか」という瞬間になります。寝ている間に何かが動くのです。

**4. データ入力チェッカー。** 列をスキャンして、ルールに違反した行をすべて色付けします。不正なメールアドレス、マイナスの価格、ID の欠落などです。最初の正規表現を書いて少しうんざりするでしょうが、それは普通のことです。

実際のスクリプトはこうなります。私が知っている中で一番シンプルなリマインダーで、Apps Script のエディタにそのまま貼り付けられます。

`function sendReminders() {
  const rows = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
  rows.slice(1).forEach(([name, date]) => {
    const days = (new Date(date) - new Date()) / 86400000;
    if (days > 0 && days <= 7) {
      MailApp.sendEmail("you@example.com", "Coming up: " + name, "Due " + date);
    }
  });
}`各部分を説明します。`getValues()` は全行を配列で返します。`slice(1)` はヘッダー行を飛ばします。`MailApp.sendEmail(宛先, 件名, 本文)` が実際の送信を行います。時間主導型トリガーを設定すれば、毎朝自動で動きます。個人アカウントは1日あたり100件までしか宛先に送れず、1回の実行は6分で止まります（[Apps Script のクォータ](https://developers.google.com/apps-script/guides/services/quotas)）。個人のリマインダーには十分ですが、メルマガには向きません。

## 中級者向けの作品アイデア（週末ひとつ分）

ここからは、シートを外の世界とつなぎます。

**5. フォームから入力する経費トラッカー。** Google フォームがシートに書き込み、スクリプトが各行をカテゴリ分けし、集計タブで月ごとの支出を表示します。面倒な入力はフォームが担当するので、ルール作りに集中できます。

**6. 価格や在庫の監視。** 公開ページや API から `UrlFetchApp` で数値を取得し、1時間ごとにタイムスタンプ付きで記録して、推移をグラフにします。私は一度、旅行の航空券価格をこの方法で追跡したことがあります。残念ながら分かったのは、買おうと決めた日に価格が上がるということでした。

**7. 承認ワークフロー。** 行に「承認待ち」の状態を付けると、承認者に2つのリンク付きメールが届き、クリックするとシートが更新されます。日本の稟議書のような流れを、小さな業務システムとして作る感覚です。職場で一番頼まれやすいプロジェクトでもあります。

**8. シートから Slack へのダイジェスト。** 毎週月曜に、期限超過の上位5件をチャンネルに投稿します。Webhook は HTTP の呼び出し1回で済みます。その1回を自分で書きたくなければ、ノーコードのコネクタに配管を任せ、あなたはロジックに集中できます。

![ふせんとタブレットのダッシュボードが置かれた木製のデスクで、スプレッドシートの作品を計画している様子](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-10/3d3562-img2.webp)

## 上級者向け: シートの枠を超えるアイデア

シートが小さく感じ始めたら、シートは画面として残し、重い処理は外に出しましょう。

**9. Excel の Python 機能によるクリーニング処理。** 20万行の重複を削除し、会社名のあいまい一致を取り、数行の pandas で外れ値に印を付けます。セットアップは [Microsoft の Python in Excel のドキュメント](https://support.microsoft.com/en-us/office/get-started-with-python-in-excel-a33fbcbe-065b-41d3-82cf-23d05397f53d)にあります。Excel 365 でのみ動き、数式は引き続きグリッドを管理します。

**10. 照合スクリプト。** 2つのエクスポート（銀行明細と仕訳帳、受注と請求書）を比べ、片方にしか存在しないものを一覧にします。経理や業務チームは毎月これを繰り返しているので、粗削りでも数時間分の節約になります。まずは完全一致から始め、金額と日付の許容範囲を後から足しましょう。

**11. シートの上に作る個人用 API。** `doGet` を使ってシートを小さなWebアプリとして公開し、JSON を返して他のツールから読めるようにします。安上がりで少し力技ですが、API とは何かを理解するには最適です。

**12. 再利用できる LAMBDA ライブラリ。** スクリプトではありませんが、数えてよいでしょう。よく使う数式の5パターンを名前付き関数にまとめ、ロジックを一か所に置きます。Biscuit なら「見つけやすい場所に骨を埋めておく」と言うでしょうね。

## 最初の週末をつぶす3つのエラー

どのスプレッドシートのスクリプトも、同じ数か所で壊れます。先に知っておけば何時間も節約できます。

**承認の確認画面。** スクリプトが初めてメールを送ったり別のファイルに触れたりすると、Google が権限の承認を求めます。画面を閉じてしまうと、スクリプトは黙って失敗し、コードが間違っていると思い込みがちです。エディタから関数を一度手動で実行し、表示される確認に同意してください。

**日付に見えて日付ではないもの。** 日付らしく見えるセルが実は文字列の場合があり、スクリプトが文字列と数値を比べてしまいます。`typeof` で確認するか、値を `new Date()` で包みましょう。Excel でも同じ罠があり、文字列として保存された日付は並べ替えを拒みます。

**時間切れ。** セルを1つずつ読み書きするループは遅くなります。呼び出しのたびにサーバーへ往復するからです。`getValues()` で範囲を一度に読み、配列上で処理してから、`setValues()` で一度に書き戻しましょう。4分かかっていたスクリプトが数秒になることも珍しくありません。Apps Script で最も効果の大きい高速化ですが、初心者向けの解説ではあまり触れられません。

何かが壊れたら、`console.log()` を追加して、実行数パネルで実際のエラーを読みましょう。メッセージは見た目より役に立つことが多いです。

## 現実的な最初の1週間

一覧ではなく計画がほしいなら、同僚に渡している順番を紹介します。1日目は困りごとを一つ選び、望む結果を一文で書きます。2日目は作業を一度手作業でゆっくり行い、すべての手順をメモします。3日目は、その手順をデータを読んで結果をログに出す関数にします。4日目は結果をシートに書き戻します。5日目はトリガーかメニュー項目を追加して、一人に見せます。完璧なスクリプトに賞はありません。毎朝動く荒削りなものは、「あとで」というフォルダに眠る磨かれたものに勝ります。

## AI について: 使うけれど、書かれたものは読む

AI のコーディング支援は、この種の作業が得意です。スクリプトは短く、目的も説明しやすいからです。列の名前、起きてほしいこと、出力の形を伝えましょう。数秒で最初の下書きが得られます。

私が守っている2つのルールがあります。まず、元のシートではなく必ずコピーで実行すること。スクリプトは「元に戻す」より速く列を上書きできます。次に、AIに一行ずつ説明させてから、自分で一つの値を変えてみること。結果を予測できないなら、そのコードはまだあなたのものではありません。

![ノートパソコンを2台前にして画面を見つめるゴールデンレトリバー](https://fdzlnqpwsaniezitwiuw.supabase.co/storage/v1/object/public/cms-media/formula-dog/2026-10/a62f75-img3.webp)

具体的なプロンプトの例はこうです。「A列に名前、B列に期限があります。期限が7日以内のものを、毎日一回メールで送ってください。」入力、出力、タイミングが明確です。「シートを自動化して」のような曖昧な依頼からは、曖昧なコードしか返ってきません。そして、曖昧なコードには見つけにくいバグが潜みます。最初の下書きが失敗したら、プロンプトを一から書き直すのではなく、エラーメッセージをそのまま貼り付けて修正を頼みましょう。

数式だけで済むなら、スクリプトは不要です。問題を説明すれば、数式と、Excel と Sheets のどちらで動くかの注記が返ってきます。

## 完成まで持っていける1つの選び方

最初のバージョンが一番小さいプロジェクトを選びましょう。「期限が近づいたらメールで知らせる」は「本格的な顧客管理システム」より優れています。粗削りなままリリースし、2週間使ってから、一番イラッとくる部分を直します。何が壊れたかを書き留めてください。そのイライラの一覧が、次の3つのプロジェクトになります。今も使っているスクリプトの多くは、人に見せるのが少し恥ずかしい4行の即席コードから始まりました。

3つのフィルターが役立ちます。

- 
**そのファイルを毎週触りますか？** 触らないなら効果を実感できず、やめてしまいます。

- 
**最初のバージョンは1つのタブに収まりますか？** 収まらないなら範囲を削りましょう。

- 
**ほかの人も使いますか？** 同僚の「この列も追加できる？」は、最高のモチベーションです。

安全に作って壊せる場所がほしいなら、クラウドのコーディング環境が、シートの外に出る中級プロジェクトに役立ちます。

## 月曜日に私ならどこから始めるか

私の選択は3番、リマインダーです。短く、トリガーを使い、結果が受信トレイに届くので、動いていることがすぐわかります。次に1番の掃除メニューを加えて、ワンクリックで使えるようにします。月末には、信頼できるスクリプトが2つと、次に作るべきものの明確なイメージが手に入っているはずです。

ToDoアプリは飛ばしてください。あなたのスプレッドシートには、すでによりよいアイデアが入っています。

## FAQ

### 初心者でも Apps Script から始められますか？

はい。最初の作品は20〜60行ほどで、Google スプレッドシートの「拡張機能」から Apps Script を開けばすぐに始められます。

### Excel と Google スプレッドシートのどちらを使うべきですか？

今使っているファイルの置き場所で決めるのがおすすめです。Google スプレッドシートなら Apps Script、Excel 365 なら Office スクリプトや Python 機能が候補になります。

### スクリプトが動かないときは何を確認すればいいですか？

まず権限の承認画面が出ていないかを確認し、次に日付が文字列になっていないかを見ます。最後に実行数パネルで実際のエラーを読みましょう。

### AI が書いたスクリプトは、そのまま使っても安全ですか？

元のシートではなくコピーで試してください。一行ずつ説明を求め、自分で値を変えて結果が予測できるようになってから使うのが安全です。

### 数式だけで済む場合もスクリプトは必要ですか？

いいえ。数式で解決できるならスクリプトより数式が適しています。LAMBDA を使えば、再利用できる数式もまとめられます。