【自動日記ツール】Googleスプレッドシートの作成
そんな欲望をもとに考えた一連の仕組みがあるので、今日は、それを紹介します。
本記事だけを読んでも意味がわからないと思いますが、もし、興味のある方は、一連の流れを以下の記事にしていますので、こちらをご参照ください。
今回は、Googleスプレッドシートを作成して、GoogleCalendarやchatGPTと連携をとる仕組み作りです。
今回の記事は、本ツールを語る上で、最も肝になる仲介役になります。
やろうと思えば、GASとGoogleカレンダーだけでいけるでしょうが、スケジュール内容の確認や、promptのテストなど考えると、スプレッドシートを挟んで作ったほうが利便性がよいであろうという判断です。
本記事だけを読んでも意味がわからないと思いますが、もし、興味のある方は、一連の流れを以下の記事、マガジンにしていますので、こちらをご参照ください。
全体のフローチャートでいうところの、「Googleスプレッドシートにリスト化」や「Googleスプレッドシートに記載のpromptを使用する」などの部分で登場するスプレッドシートの用意になります。
新しいスプレッドシートを作成する
スプレッドシート作成画面から、空白のスプレッドシートを出します
シートを3つ用意する
新しいシートを作って以下の名前をつけます
GCalendar
inputData
prompt
この名前は、このあとプログラムで呼び出すので、このままつけてください。
各シートと、役割は以下です。
GCalendar
Googleカレンダーから抽出した情報が並びます
ここには、このあと別途作成するプログラムで、自動的に月曜日〜日曜日の一週間のデータが抽出されます
A列〜C列に、「日付」「件名」「説明」と入れておきます
inputData
カレンダーから抽出した情報をもとにGPTにinputするためのデータにします
「GCalendar」で抽出したデータをもとに今日の日付分のデータを抽出して1つのセルにまとめます
A列〜B列に「今日の日付」「daily」と入れておき、2行目には、各セルに以下の関数を入れます
■セルA-2にいれる関数
=TODAY()
■セルB-2にいれる関数
=TEXTJOIN(", ", TRUE, ARRAYFORMULA(IF(GCalendar!A:A=A2, IF(GCalendar!C:C<>"", TEXT(GCalendar!A:A, "yyyy/mm/dd") & ", " & GCalendar!B:B & ", " & GCalendar!C:C, ""), "")))
ここで「B-2」にいれる関数によって、何日分のデータをGPTに送るか調整できます。
例えば、3日に1回、3日分の日記を書きたいという場合、この関数を調整します。
※別記事のGASで、「GCalendar」に一週間分のデータを抽出しているのは、このへんの調整をしやすくするようにです。
prompt
GPTに送るpromptを保存します
各セルにいれるものは以下です
promptを用意する
A列
A-1:function
A-2:prompt
ヘッダー、項目名です。
もともと、モデルの指定などもスプレッドシートでやろうと思って、他の項目名を入れていましたが、(「Model」や「Token」などもあったんですが)うまくいかないのでやめました。その名残でpromptという項目名だけ残ってますが、とくに意味がある列ではないです。苦笑
B列:日記を書くGPTへのprompt
全体の行程中の、以下フロー内のスプレッドシートにあたります
B-1:buildApiRequestOptions
どの関数で使用するのかわかりやすいように名前を入れています
B-2:「inputData」シートのデータをもとに日記を書くように指示するprompt部分です
書いてほしい日記の内容にあわせてpromptを入れます。
例:
「入力されたデータをもとに日記を書いてください」
今回の仕組みではGPT4を使うので、そんなに凝ったことをしなくても自然なものはできますが、「英語で書いて」や「200文字程度にまとめて」といったような細かい指示がここからできます。
以下ではもう少し詳細なpromptを販売しています(宣伝)
C列:「イラストを書くためのprompt」を書くGPTへのprompt
全体の行程中の、以下フロー内のスプレッドシートにあたります
C-1:extractEventFromDiary
どの関数で使用するのかわかりやすいように名前を入れています
C-2:日記の内容をもとにDALL-Eへの指示内容を生成するpromptになります。
日記の内容をそのままDALL-Eに送っても思ったようなイラストにはならないため、主要な出来事を抽出して、「どのような内容のイラストにしてほしいか」を生成してもらいましょう。
例:
「入力された日記をもとに主要な出来事を抜き出し、DALL-Eへのpromptを生成してください」
以下ではもう少し詳細なpromptを販売しています(宣伝)
D列:イラストを書くGPTへのprompt
全体の行程中の、以下フロー内のスプレッドシートにあたります
D-1:createIllustrationPrompt
どの関数で使用するのかわかりやすいように名前を入れています
D-2:上記の「C-2」のやりとりで生成されたpromptに加えて、更に画風の指定をするpromptです
C-2のアウトプットで、それなりのpromptができていると思うので、「それなりのアウトプットはされますが、毎回の画風が安定しないので、詳細に指定したほうが良いと言えます。
例:
入力されたデータをもとにリアルなイラストにしてください
↓同じpromptでも、こんなにアウトプットが違う
そんな中で、アニメ風の画風で安定させるのが結構面白かったので、以下ではもう少し詳細なpromptを紹介しています。(宣伝)
これで、スプレッドシートの準備は完了です。
この記事が気に入ったらサポートをしてみませんか?