ChatGPTデータをExcel/gGoogleスプレッドシートに取り込む方法

この記事は約7分で読めます。

用途別に、いちばんカンタンな方法 → 本格的な方法の順でまとめます。
(ゴールは「ChatGPTの出力をExcel/Googleスプレッドシートで“綺麗に”使える形にする」ことです)


① いちばん簡単:ChatGPTにCSVで出してもらう → 取り込む

ChatGPT側

  • 指示例:

    「この一覧を CSV(UTF-8) で出力して。1行目は見出しにして。」
    「区切り文字はカンマ、値にカンマがあるときは二重引用符で囲んで。」

→ ChatGPTがコードブロックでCSVを返すので、そのままコピーしてテキストファイルに保存(例:data.csv)。

Excelに取り込む

  1. データタブ → テキスト/CSVからdata.csv を選択

  2. 文字コード:UTF-8、区切り記号:カンマ を確認 → 読み込み

  3. 必要なら データ型の変換(日付・数値)を実行

Googleスプレッドシートに取り込む

  1. 空のシートを開く → ファイルインポートアップロードdata.csv を選択

  2. 「新しいシートとして挿入」を選ぶと安全

メモ:日本語を含むならUTF-8で保存してください(文字化け防止)。


② 表のままコピペ:Markdown表 → 表として貼り付け

ChatGPTの表(|区切りのMarkdown表)は、そのまま範囲コピー→Excel/スプレッドシートへ貼り付けで整形されることが多いです。
崩れる場合は、ChatGPTに「CSVで出力」と言い換えるのが確実。


③ 過去の会話を大量に:ChatGPTのエクスポートJSONを変換して取り込む

「設定 → データ管理(Data Controls)→ データをエクスポート」で、過去の会話がJSONで入ったZIPが取得できます。
これをCSVに変換して取り込む手順です。

A. Excelでの変換(Power Query)

  1. データデータ取得ファイルからJSON から

  2. ルートを展開→必要なフィールド(例:日時、相手、本文)を展開

  3. 整形(改行除去、本文の要旨抽出など)→ 閉じて読み込む

  4. 以後は更新ボタンで再読込OK

B. Googleスプレッドシートでの変換(Apps Script)

  1. シートを開く → 拡張機能Apps Script

  2. ZIP内のJSONをGoogleドライブに置き、下のような簡易スクリプトで行に展開

/** JSON(会話ログ)をシートに展開する例 */
function importChatJSON() {
const fileId = 'YOUR_JSON_FILE_ID'; // Driveに置いたJSONのID
const json = JSON.parse(DriveApp.getFileById(fileId).getBlob().getDataAsString('utf-8'));
const sh = SpreadsheetApp.getActive().getSheetByName('import') || SpreadsheetApp.getActive().insertSheet('import');
sh.clearContents();
// 想定するJSON構造に合わせて適宜変更
const rows = [['dateTime','role','text']];

json.conversations.forEach(conv => {
conv.messages.forEach(m => {
rows.push([m.create_time, m.author?.role, (m.content?.parts || []).join('\n')]);
});
});

sh.getRange(1,1,rows.length,rows[0].length).setValues(rows);
}

  1. 保存 → ▶実行 → 権限許可 → import シートに展開

JSONのフィールド名はエクスポート仕様で少し変わることがあります。conversationsmessagescontent.parts などを実データに合わせて調整してください。


④ 自動化したい:ChatGPT(OpenAI)へ直接書き込む

「質問→応答を自動でスプレッドシートの次行へ追記したい」場合の例です。

Googleスプレッドシート(Apps Script)

  • 目的:セルに質問を書いたら、スクリプトでOpenAI APIを呼んで隣に回答を入れる

/** A列の質問に対し、B列へ回答を書く例(gpt-4o-miniなど)*/
function answerRows() {
const API_KEY = 'YOUR_OPENAI_API_KEY';
const sh = SpreadsheetApp.getActiveSheet();
const range = sh.getRange('A2:A'); // 質問列
const values = range.getValues().filter(r => r[0]);

values.forEach((r, i) => {
const q = r[0];
const res = UrlFetchApp.fetch('https://api.openai.com/v1/chat/completions', {
method: 'post',
contentType: 'application/json',
headers: { Authorization: 'Bearer ' + API_KEY },
payload: JSON.stringify({
model: 'gpt-4o-mini',
messages: [{role:'user', content:q}],
temperature: 0.2
})
});
const data = JSON.parse(res.getContentText());
const a = data.choices?.[0]?.message?.content || '';
sh.getRange(i+2, 2).setValue(a); // B列に書き込み
Utilities.sleep(300); // 連続呼び出しの間隔
});
}

初回は サービス→高度なGoogleサービス の有効化やUrlFetchAppの権限許可が必要です。料金や利用制限にも注意。

Excel(Power Query or Office Scripts)

  • Office Scripts(Excel on the Web)でfetch相当は制約があるため、Power Automateや**外部スクリプト(Python)**からAPIを叩き、結果を表に書き込む方が実運用は安定です。

  • あるいはPower QueryでWeb APIを呼び、JSONを展開(要CORSや認証の扱い注意)。


⑤ 小ワザ集(整形・クリーニング)

  • Excel

    • CSVが一列に入ったら:データ → テキストを列に(区切り:カンマ/タブ)

    • 文字化け:データ → テキスト/CSVからUTF-8を指定し直す

    • 文字列の分割:=TEXTSPLIT(A1, ",")(Microsoft 365)

  • Googleスプレッドシート

    • 貼り付け後に列分割:データ → テキストを列に分割(区切り選択)

    • 1セルにまとまったCSVを式で分割:=SPLIT(A1, ",")

    • 改行区切り:=SPLIT(A1, CHAR(10))


どれを使うべき?

  • 単発/小さな表:①CSVで出力→取り込み

  • 表の体裁をそのまま:②Markdown表をコピペ

  • 大量の会話ログ:③エクスポートJSON→Power Query/Apps Scriptで展開

  • 毎回自動で反映:④APIで自動書き込み(Apps Script/Power Automate 等)

Verified by MonsterInsights