GoogleスプレッドシートでAIを使った構造化を簡単に!gas-structifierをご紹介🪴✨
gas-structifier ってなに?
突然ですが、Google スプレッドシートを使っていて、データ整理に疲れたことはありませんか?
例えば、自由入力されたアンケートや雜多なテキスト情報を前にして、
「これ、どうやって整理しよう…?」
と悩んだ経験はありませんか?
そんなあなたのためのライブラリが、この gas-structifier です!
gas-structifier を使えば、Google スプレッドシートでのデータ整理がもっと簡単に、もっと楽しくなります🎉
gas-structifier でできること
gas-structifier は、Google Apps Script(GAS)で動作するライブラリで、以下のことが簡単に実現できます:
- 自由入力された非構造化データを、指定したスキーマに基づいて きれいな構造化データ に変換!
- 自然言語でスキーマを定義し、それをプログラム用のスキーマに自動変換!
例えば、「名前と年齢と職業がバラバラに書かれた文章」から、
構造化された表形式データを自動生成 できます!
必要な準備
gas-structifier を動かすには、OpenAI の API を利用します。そのため、以下の準備をお願いします:
-
OpenAI の API キーを取得
- OpenAI の公式ページでアカウントを作成し、API キーを取得してください。
-
API キーをスクリプトエディタに設定
-
スクリプトエディタで次のような関数を使用してキーを設定します:
setOpenAIKey("YOUR_OPENAI_API_KEY");
-
キーが正しく設定されているか確認するには、次の関数を実行します:
checkToken();
※ セキュリティのため、API キーはプロジェクトのプロパティに保存されます。
-
-
gas-structifier ライブラリをインストール
-
Google Apps Script プロジェクトに次のスクリプト ID を追加してください:
スクリプト ID: 1EDhKN-alioE4fwlEaPYJWbxJbIgHnpKUrJJs1HSud1y1rJatdKkBdAJI
-
具体的な使い方
gas-structifier を使えば、これまで手作業でやっていたデータ整理が、わずか数秒で完了します!例えば以下のシナリオを考えてみてください。
STRUCTIFY 関数の使い方
シナリオ:アンケート結果を整理してみよう!
自由形式で書かれたアンケート結果を以下のようにスプレッドシートに入力しているとします。
ID | 入力テキスト |
---|---|
ID_1 | 山田太郎は30歳で、エンジニアとして働いています。 |
ID_2 | 佐藤花子、40歳、デザイナー。 |
このデータを「名前(name)、年齢(age)、職業(occupation)」というスキーマに基づいて整理したい場合、gas-structifier があれば超簡単です!
以下のように STRUCTIFY 関数を設定するだけで完了します。
const inputRange = [
["ID_1", "山田太郎は30歳で、エンジニアとして働いています。"],
["ID_2", "佐藤花子、40歳、デザイナー。"]
];
const schemaRange = [
["name", "age", "occupation"],
["ユーザーの名前", "ユーザーの年齢", "ユーザーの職業"],
["string", "number", "string"]
];
const result = STRUCTIFY(inputRange, schemaRange);
実行すると、以下のような構造化データが得られます:
"ID_1,山田太郎,30,エンジニア|ID_2,佐藤花子,40,デザイナー"
この結果をスプレッドシートに展開すると:
ID | name | age | occupation |
---|---|---|---|
ID_1 | 山田太郎 | 30 | エンジニア |
ID_2 | 佐藤花子 | 40 | デザイナー |
SCHEMIFY 関数の使い方
シナリオ:スキーマを自然言語で作成!
「スキーマを一から考えるのは面倒…」という場合も安心してください。
SCHEMIFY関数を使えば、自然言語で書いた説明から自動でスキーマを生成できます。
例えば、以下のような日本語を入力します:
const naturalLanguageInput = "名前、年齢、職業を含む情報";
const schemaTable = SCHEMIFY(naturalLanguageInput);
実行すると、以下のようなスキーマが生成されます:
[
["name", "age", "occupation"],
["ユーザーの名前", "ユーザーの年齢", "ユーザーの職業"],
["string", "number", "string"]
]
これで、STRUCTIFY関数にそのまま渡せるスキーマが完成します!
応用例:複数テーブルへの展開
シナリオ:1人の入力を複数のテーブルに整理
ある会社が顧客情報を以下のような形式で収集しているとします。
ID | 入力テキスト |
---|---|
ID_1 | 佐藤太郎、東京都在住、35歳の会社員。過去に「ノートPC」と「スマホケース」を購入。 |
ID_2 | 鈴木花子、北海道在住、28歳のデザイナー。最近「スニーカー」と「バックパック」を購入。 |
この自由入力データを以下のように「顧客情報」と「購入履歴」の2つのテーブルに分割したい場合、gas-structifier を活用できます!
顧客情報テーブルを生成
まず、顧客情報を抽出するためのスキーマを設定します:
const customerSchema = [
["name", "age", "location", "occupation"],
["名前", "年齢", "居住地", "職業"],
["string", "number", "string", "string"]
];
このスキーマを使って、STRUCTIFY関数を利用します。
const inputRange = [
["ID_1", "佐藤太郎、東京都在住、35歳の会社員。過去に「ノートPC」と「スマホケース」を購入。"],
["ID_2", "鈴木花子、北海道在住、28歳のデザイナー。最近「スニーカー」と「バックパック」を購入。"]
];
const customerInfo = STRUCTIFY(inputRange, customerSchema);
結果として以下のようなデータが得られます:
"ID_1,佐藤太郎,35,東京都,会社員|ID_2,鈴木花子,28,北海道,デザイナー"
これをスプレッドシートで展開すると:
ID | name | age | location | occupation |
---|---|---|---|---|
ID_1 | 佐藤太郎 | 35 | 東京都 | 会社員 |
ID_2 | 鈴木花子 | 28 | 北海道 | デザイナー |
購入履歴テーブルを生成
次に、購入履歴を抽出するためのスキーマを定義します。
const purchaseSchema = [
["customer_id", "item"],
["顧客ID", "購入した商品"],
["string", "string"]
];
購入履歴は1行に複数の商品が記載されているため、データを分割します。
const purchaseInputRange = [
["ID_1", "ノートPC、スマホケース"],
["ID_2", "スニーカー、バックパック"]
];
const purchaseHistory = STRUCTIFY(purchaseInputRange, purchaseSchema);
結果として以下のようなデータが得られます:
"ID_1,ノートPC|ID_1,スマホケース|ID_2,スニーカー|ID_2,バックパック"
これをスプレッドシートで展開すると:
customer_id | item |
---|---|
ID_1 | ノートPC |
ID_1 | スマホケース |
ID_2 | スニーカー |
ID_2 | バックパック |
データの活用例
これらの2つのテーブルを利用して:
- 顧客情報を分析:年齢層や地域ごとの職業分布を確認。
- 購入傾向を把握:顧客ごとの購入履歴や人気商品のランキングを作成。
例えば、「東京都在住の会社員が購入する商品」を簡単に抽出できるようになります。
gas-structifier の可能性
gas-structifier を使えば、これまで手作業で時間をかけていた複雑なデータ整理が、わずか数秒で完了します!
- 複雑なデータをシンプルに整理:顧客データ、購買履歴、アンケート結果など幅広い用途に対応。
- 自然言語スキーマで効率化:初心者でも簡単に扱える柔軟な設計。
- 大量データも高速処理:スプレッドシートの作業を大幅に短縮。
あなたも、この魔法のようなツールを活用して、複雑なデータ整理を楽々こなしてみませんか?✨
リポジトリへのリンク
gas-structifier の詳細やコードについては、以下のリポジトリをご覧ください:
Discussion