miyyyyyy
@miyyyyyy

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

ChatGPTとスプレッドシートの連携・GPT関数でプロンプトにセルを指定した場合に、セル内で別セル情報を読み込みさせる方法

解決したいこと

ChatGPTとスプレッドシートをAPI連携させた場合に、
下記のように、プロンプトでセルを指定した場合、
セル内にB6、D6など、別セルの情報を参照するように指定しても、
「B6」「D6」と文字そのままに認識してしまいます。

image.png

(字が小さくて申し訳ありません)

F6に、=GPT(B3)と指定すると、商品情報として、B6:E6のセルに入力された商品情報を参照してほしいのに、「B6は~」と「B6」をセルとして参照するのではなく、そのまま文字として認識しています。

B3のセルの中に、情報として参照して欲しいセルを記入する場合、
どのように入力すれば、「参照するセル」と認識してくれますでしょうか。

発生している問題・エラー

「B6は~」と「B6」をセルとして参照するのではなく、そのまま文字として認識しています。
image.png

自分で試したこと

F7に、下記のプロンプトを入力して出力しました。

=GPT("あなたはプロの販売員です。以下の制約条件と商品情報をもとに、最高の商品説明を出力してください。
# 制約条件:・文字数は90文字から110文字程度。・小学4年生でもわかる言葉で書く。・出来る範囲で、以下の情報を盛り込んでください。
・ベネフィット(その商品の特性により、顧客はどんなメリットを得られるか)・エビデンス(その商品にはどんな実績があるか)・アドバンテージ(類似商品への優位性をアピール)
・フィーチャー(細かい情報は最後の方に書いてください)・文章を簡潔に。・タイトルはいりません。・同じ内容を繰り返さない。・文章を最後まで完結させてください。#商品情報 商品名は"&B7&"商品説明は"&C7&"商品内容は"&D7&"メーカー公式説明は"&E7)

image.png

やりたいこと

「自分で試したこと」のように=GPT(~)の(~)内で、&でプロンプトを指示するのではなく、セル内でA6などの参照先を指示して参照させることは可能でしょうか。
そんな機能はないのでしょうか。

0

1Answer

そんな機能はないのでしょうか。

デフォルトではそのような都合のいい機能はありません。
なければプログラミングで作ればいいだけです。

方法

スプレッドシートのメニュー拡張機能→Apps Script
でスクリプトエディタを開き、下記のような関数ReplaceAddressを追加します。

function ReplaceAddress(cellContent) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // %%で囲まれたアドレス番号を検索
  var regex = /%%(.*?)%%/g;
  var matches = cellContent.match(regex);
  
  if (matches) {
    for (var i = 0; i < matches.length; i++) {
      // %%を取り除き、アドレス番号を取得
      var address = matches[i].replace(/%%/g, "");
      
      // アドレス番号のセルの内容を取得
      var replacement = sheet.getRange(address).getValue();
      
      // 元の文字列の%%アドレス番号%%をセルの内容で置き換える
      cellContent = cellContent.replace(matches[i], replacement);
    }
  }
  
  return cellContent;
}

そして保存ボタンを押し、この関数を一旦実行してください。
権限ダイアログが現れた場合は承認してください。
(この最初の実行ではエラーが出ますが、特に気にしなくてよいです)

このReplaceAddress関数は、「%%」で両側を囲まれている文字列をアドレス番号とみなし、そのアドレス番号に記入されている値に置き換えるものです。

使い方

スプレッドシートに書いてあるすべてのプロンプトについて、入力内容のうち、アドレス番号に該当する文字列の両側をすべて「%%」で囲んでおきます

プロンプトの記入例:(一部略してあります)

あなたはプロの販売員です。以下の制約条件と商品情報をもとに、最高の商品説明を出力してください。
...略...

#商品情報
商品名: %%B7%%
商品説明: %%C7%%
商品内容: %%D7%%
メーカー公式説明 %%E7%%

以下略

上記のように、アドレスの両側を半角の「%%」で囲む、ということです。

上記のプロンプトをA1に記述していると仮定します。
そして、実行結果を出力したいセルに下記の数式を入力します。

=GPT(ReplaceAddress(A1))

このようにすることで、GPT関数に対して、プロンプト中のアドレスに該当する部分が実際にそのアドレス番号に書いてある内容に置換された内容が渡されることになります。

1Like

Comments

  1. @miyyyyyy

    Questioner

    お世話になります!
    ありがとうございます!

    やはりデフォルトではそのような都合の良い昨日はないのですね!

    代替案として、Apps Scriptを使用するやり方も丁寧にご紹介いただき、
    大変助かりました!

    いったんこちらで検討してみようと思います!

Your answer might help someone💌