WICの中から

機構設計者が株式投資や育児に奮闘するblog

ChatGPTにGoogleスプレッドシートにマクロを実装してもらった

マクロも書けると噂のChatGPT

Chat GPT

うまく使いこなせれば運用でカバーしている数々の闇マクロを改善できると思う一方で、業務でのChatGPT利用は良き社会人としてはリスクありますよね。

そんな折に思いついたのがプライベートで利用しているGoogleのスプレッドシートです。

スプレッドシートは我が家の家計簿

我が家では共通家計の管理にスプレッドシートを用いています。
家計を1つにしていても支払者はだったり嫁さんだったり、あるいは共通口座から引き落とすクレジットカードだったりします。
誰がいくら支払っているか分かるよう、勘定を色分けして月末に個別の支払い分を返還するようにしているんですよね。

で、各色の支払額集計はマニュアルです。ここを、マクロ的なもので自動化できれば毎月の家計簿〆作業が楽になります。

スプレッドシートのマクロ作成を依頼する

まずは赤文字の集計をとるようなマクロを作成してもらいましょう。

Chat GPTマクロ

function sumRedNumbers() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var range = sheet.getDataRange();
    var values = range.getValues();
    var total = 0;
    for (var i = 0; i < values.length; i++) {
        for (var j = 0; j < values[i].length; j++) {
            var cell = values[i][j];
            if (typeof cell === "number" && cell.toString().indexOf("color: #ff0000") !== -1) {
                total += cell;
            }
        }
    }
    SpreadsheetApp.getUi().alert("赤文字の数字の合計は" + total + "です");
}

が、やってみても合計は0で表示されます。失敗です。

うまく動かないんだけど?

ChatGPTくんはコーディングに自信があるらしく、数字や赤文字のセルが存在していないと言います。

もしかしたら読み込んでいるセルのスタイルが違ったり、色コードが想定と違うのかもと思い、最初のセルに数字を入れてみてスタイルを確認しようと試みます。

が、なぜかLoggerでエラーが起きるので再度聞いてみることに。

データ型やメソッドの仕様を詳しく教えてくれました。助かります。

そしてこの理屈に従うとChatGPTくんが書いたコードの一部が間違っているね。自分が指摘している内容で間違えてるじゃないですか。

追加質問でサラッと正しい関数を教えてくれました。

if (typeof cell === "number" && sheet.getRange(i+1,j+1).getFontColor()=="#ff0000") {
    total += cell;
}

赤色の数値の合計を教えてくれるマクロ

最終的に以下のようなコードになりました。

function sumRedNumbers() {
    var sheet = SpreadsheetApp.getActiveSheet();
    var range = sheet.getDataRange();
    var values = range.getValues();
    var total = 0;
   
   //Check color code
   // var cell = sheet.getRange(4, 15);
   // Logger.log(cell.getFontColor());

    for (var i = 0; i < values.length; i++) {
        for (var j = 0; j < values[i].length; j++) {
            var cell = values[i][j];
            if (typeof cell == "number" && sheet.getRange(i+1,j+1).getFontColor()=="#ff0000") {
                total += cell;
            }
        }
    }
    SpreadsheetApp.getUi().alert("赤文字の数字の合計は" + total + "です");
}

まとめ

ChatGPTにGoogleスプレッドシートのマクロ実装してもらいました。
エラー解析含めてもスプレッドシートマクロの知識ゼロから1時間もかからずに出来上がりました。

一発で完全なコードを吐いてはくれませんでしたが、やりたい内容を都度聞きながらコードを改善していくのはなかなか効率が良いです。マクロ系の技術書は必要なくなるのではと思える程度には使えると感じました。

今まで闇マクロを作るときってやりたい内容を都度検索してたんですよね。色んな人のコードコピペの継ぎはぎの末に生まれるキメラコードは可読性も悪いし拡張性もイマイチだったんですよね。業務用闇マクロも、ChatGPTの力を借りつつ僕自身が直したていで改善していきたいものです。