
GPT for Sheets™ and Docs™アドオンでブックマークレットを作ってみた
スプレッドシート上でChatGPTさん風の環境が構築できた
内容:sp8999さんの記事を参照してスプレッドシート経由でブックマークレットを実装テスト。gmailで面倒に思ってる事を心持軽くしてみた。
対象者:google検索もプログラマに聞くのも苦手な人
参照元:https://sp8999.com/etc/2023/01/18/323/
ブックマークレットを触ったことない状態から実装まで
スプレッドシートにアドオンを入れます。5分
任意セルにスクリプト”=gpt(任意のセルを表す文字列,1)”等入れます5分
任意のセルで指示を入れます。指示は具体的にここで試行錯誤。50分
以上。環境構築まであっという間で書くことないので、どんな機能を実装したのか書きます。
ゴミ溜めみたいなgmailをなんか解決したい(漠然)
せっかくAIさんに課題解決してもらうならこのくらい漠然としたことを聞いてみたいと思い、昔から不満だったけど放置していたgmailのゴミ問題を解決してもらいましょう。
ちょっとした調べもののために登録したものとかポイントのために連携したものとかチケット買うためにいれたものとか…要らない情報が届く最終処分場みたいなアドレスがちょいちょいあり、しかもgmailの仕分けと迷惑メールの仕様とUIがとても使い辛くて登録する気にもなりません。
そんなこんなをAIさんのチカラを借りて解決します。やり方は判りません!

ただ実装手法も分らないままだと流石にAI(今回はGPT)さん困っちゃうと考えて、まずは別の方に聞いてみました。
①Google先生から実装手法を聞き出す
課題解決の方向性はGoogle先生に聞いてみます。gmailを制御するスクリプトないですか?と聞いたらApps ScriptとJavaScriptなどがあるとのこと。いくつかサイトを覗いたところ、今回欲しい機能は超小規模だったのでjavascriptを選択してみました。
②GPTさんは具体的に聞くべしと記事で見た。方針を決める
コードに限らず要件定義はしっかりねとのことで、重視するUXを決めます。
コード自体の実装とメンテが手軽。
要らないメールアドレスの管理が手軽
google仕様はコロコロ変わる(印象)ので手軽さを重視して
ブックマークレット(ブラウザ上でjavascriptが管理できる)
gmailの下書きにリストを手入力(gmailの根本機能で管理できる)
という方針でブレイクダウンしていきます。いきなり実装順まで具体的に指示するのはjavascriptをコーディングしたことない身には不可能です。
③とりあえず具体化しながら要素を絞ってより具体化する
ここまできたらあとはGPTさんに質問しながら実装手法を探り、更に質問をブラッシュアップして出力されるコードを詰めていきます。30分ほどかかって最終的な要素まで具体化できました。
gmailの下書の本文(下書きの本文自体を取得することはできなかった)で(ユーザーが任意に)選択した文字列を取得する
取得した文字列の改行文字を空白文字に置換する
https://mail.google.com/mail/u/0/#search/の後に置換した文字列を追加したURLにアクセスする(=文字列検索すると同義)
下は最終的に生成したコードです。
注意点としては、https://mail.google.com/mail/u/0/#search/はgmailの複アカウントで同時ログインしている時にはプライマリかセカンダリかそれ以後で0,1,2,..と文字列に変化があるようです。
javascript:(function(){
let str = window.getSelection().toString();
let newStr = str.replace(/\n/g, ' ');
window.location.href='https://mail.google.com/mail/u/0/#search/'%20+%20newStr;
})();

④ブックマークレットとgmailの下書きにリストを作成
とりあえず所定の配置にしてテストしましょう。
③のコードをブックマークレットとして登録
gmailの下書きにメールのリストを入れる
{
ahoge@test.com
uhoge@example.co.jp
}


試行する
出来たら試しにブックマークレットをクリックすると(gmailの下書きでリストした)選択した文字列が取得、置換されて検索されたことを確認できました。目標達成です。やった。

ここまで大体1時間。
前々から薄っすら不満だったgmailの整理整頓がお手軽に実装できてしかもリストやコードのメンテも見える範囲で収まっているため個人的に満足できる機能になりました。
ブックマークレットなのでブラウザさえあれば動きますしリストはテキスト形式なので幅広い環境でメンテしやすいし、良い実装になりました。
また小ネタとは言え、javascript未学習のユーザーが独学でこれを実装するハードルはとても高いのではと感じます。そういう意味でも職業や趣味でコードを書く人以外はAIさんに頼って日々の細かい課題を解決していける可能性が高まるのは非常に良い事だなと改めて感じました。
正直に言うと、私は日頃から変な機能を求める性癖があるみたいで、今まで生きてきてそれなりにやりたいことをググってみたのですが、どうにもズバリこれを組み合わせましょう、っというジャストアイディアに触れられた例がありません。そういう意味でもGPTさんとのやりとりはレスポンスも含めてとてもポジティブでした。
この記事は以上です。
最後まで読んでいただきありがとうございました。