GASとChatGPTで業務自動化!実装手順をプロンプト付きで解説
この記事でわかること
- GASコードをChatGPTで生成する方法
- GASとChatGPTで業務を自動化する手順
- ニュースを自動収集するシステムの作り方
- GoogleスプレッドシートやドキュメントとChatGPTの連携方法
ChatGPTを使えばGAS(Google Apps Script)開発の効率が上がると知っても、具体的な活用方法が分からない方は多いのではないでしょうか。本記事では、ChatGPTを使ったGASコードの生成手順や、実際の開発現場での効率化のポイントを解説します。具体例として、ニュースサイトから情報を自動収集するスクレイピングシステムの作り方や、スプレッドシートとの連携方法まで、初心者でも実践できる内容を分かりやすく説明していきます。
目次
GASコードをChatGPTで生成するメリット3つ
GASとChatGPTを組み合わせることで、開発効率を大幅に向上させることができます。具体的にどのようなメリットがあるのか、詳しく見ていきましょう。
コーディング時間を大幅にカットできる
ChatGPTを活用することで、GASのコーディング時間を大幅に削減することが可能です。ChatGPTは高度な自然言語処理能力を持っており、人間の意図を理解して適切なコードを生成できます。
例えば、スプレッドシートのデータ集計や自動メール送信といった一般的なGAS開発タスクであれば、ChatGPTに自然言語で要件を伝えるだけで、数分で実装可能なコードを生成できます。これにより、開発者は複雑なロジックの設計や最適化に時間を集中できるようになります。
プログラミング経験が無くても開発ができる
ChatGPTの特筆すべき点は、プログラミング初心者でもGAS開発が可能になることです。ChatGPTは自然言語での指示を理解し、技術的な要件に変換してコードを生成できるため、プログラミング言語の文法やライブラリの使い方を深く理解していなくても、必要な機能を実装できます。
例えば、「スプレッドシートの特定の列にある数値を合計して、新しいシートに結果を出力する」といった要件を自然な日本語で伝えるだけで、実行可能なGASコードを得ることができます。これにより、業務効率化やプロセス改善のアイデアを持つ現場のスタッフが、直接システム化を進められるようになります。
業務の自動化や効率化が可能になる
GASとChatGPTを組み合わせることで、様々な業務プロセスを効率的に自動化できます。ChatGPTは複雑な業務ロジックを理解し、それを実装するためのGASコードを生成できるため、以下のような業務効率化が実現可能です:
主な自動化・効率化の例
・データ集計や分析の自動化:複数シートのデータを統合し、必要な集計や分析を自動で実行
・ドキュメント処理の効率化:定型文書の自動生成や、文書内容の自動チェック機能の実装
・コミュニケーション業務の自動化:条件に基づく自動メール送信や、チャットボットによる問い合わせ対応
・スケジュール管理の効率化:カレンダーとの連携による予定調整の自動化
これらの自動化により、人的ミスの削減、処理時間の短縮、そして従業員の作業負荷軽減が実現できます。結果として、組織全体の生産性向上とコスト削減に貢献することができるのです。
GASコードをChatGPTで生成する3ステップ
ChatGPTを使ってGASコードを効率的に生成するためには、適切な手順を踏むことが重要です。ここでは、実践的な3つのステップを詳しく解説していきます。
STEP1.プロンプトを作成してコードの設計図を描く
効率的なGASコード生成の第一歩は、明確なプロンプト(指示)の作成です。ChatGPTに対して具体的で詳細な指示を与えることで、より正確なコードを生成することができます。プロンプトには、実現したい機能の具体的な説明はもちろん、入力データの形式や場所、期待する出力の形式、保存先などを明確に記述する必要があります。また、必要な例外処理やエラーハンドリング、パフォーマンスに関する要件なども含めることで、より完成度の高いコードを得ることができます。
例えば、「スプレッドシートのデータを集計する」という曖昧な指示ではなく、「A2:A10のセルにある数値データの平均値を計算し、B1セルに出力する。データが空の場合は”データなし”と表示する」というように具体的に指示することが重要です。このように詳細な要件を提示することで、ChatGPTはより正確にユーザーの意図を理解し、適切なコードを生成することができます。
STEP2.ChatGPTと対話を重ねてコードを改善する
ChatGPTの強みは、対話を通じてコードを段階的に改善できる点です。まずは基本的な機能を実装するコードを生成し、その動作を確認します。その後、必要に応じて追加の要件や改善点を伝えることで、より完成度の高いコードへと進化させることができます。
開発プロセスとしては、まず基本機能の実装から始め、動作確認後に必要な機能を段階的に追加していきます。例えば、最初は単純なデータ処理機能を実装し、その後エラーハンドリング、データ検証機能、ログ出力などの機能を順次追加していくことができます。また、生成されたコードのパフォーマンスや可読性を向上させるための改善も、対話を通じて実現することができます。
効果的なコード改善の進め方
・基本機能の実装から始め、段階的に機能を追加
・エラーハンドリングの実装で安定性を向上
・性能最適化による処理速度の改善
・保守性を高めるためのコード整理
STEP3.実行してエラーを修正する
ChatGPTが生成したコードは、必ずしも最初から完璧に動作するわけではありません。実際の環境で実行してエラーを確認し、修正を重ねることが重要です。エラーが発生した場合は、まずエラーメッセージと発生状況を確認し、問題の箇所を特定します。特定したエラーの内容をChatGPTに伝え、修正案を求めることで、より確実な解決方法を得ることができます。
エラー修正のプロセスでは、提案された修正をコードに適用し、再度実行して動作を確認します。必要に応じて更なる改善を依頼することで、より堅牢なコードへと改良していくことができます。このプロセスを通じて得られた知見は、今後の開発にも活かすことができ、開発スキルの向上にもつながります。
例えば、データの無いシートでコードを実行した際にエラーが発生した場合、そのエラーメッセージをChatGPTに伝えることで、適切なエラーハンドリングを含む改善案を得ることができます。実際の開発現場では、このようなエラーへの対応が重要となりますが、ChatGPTを活用することで、効率的に解決策を見出すことが可能です。
このように、3つのステップを着実に実行することで、より効率的にGASコードを開発することができます。各ステップで得られた知見を蓄積し、次回の開発にも活かすことで、さらなる効率化が期待できます。
GASとChatGPTでニュースを自動スクレイピングする方法【プロンプト付き】
実践的な例として、GASとChatGPTを使用してニュースサイトから情報を自動収集する方法を解説します。この例を通じて、実際のプロジェクトでどのようにChatGPTを活用できるかを学びましょう。
プロンプトを作成する
ニュースサイトからの情報収集を自動化するために、まずはChatGPTに適切な指示を出す必要があります。効果的なコードを生成するためのプロンプトには、実装すべき機能の詳細や、入出力の形式、エラー処理などの要件を明確に記述することが重要です。
以下に、生成AIに関するニュースを自動収集する際の具体的なプロンプトの例を示します。
# Google News RSS フィード収集システム
## 目的
Google App Scriptを用いて、GoogleニュースのRSSフィードから、AI関連の最新ニュースを自動収集し、体系的に整理・保存するシステムを構築してください。
## キーワード一覧
### 生成AI関連
– 生成AI(Generative AI)
– AI生成
– 人工知能生成
### 主要なLLMプラットフォーム
– ChatGPT / GPT-4 / GPT-3.5
– OpenAI
– Google Gemini
– Anthropic Claude
– Perplexity AI
### 技術用語
– LLM(大規模言語モデル)
– ファインチューニング
– プロンプトエンジニアリング
– RAG(Retrieval Augmented Generation)
## システム要件
### データ収集
– Google News RSSフィードをソースとして使用
– 日本語のニュース記事のみを対象
– 重複記事の自動除外機能を実装
– 1日4回(6時間おき)の定期実行
### データ保存
**Googleスプレッドシートへの出力項目:**
– 取得日時(YYYY/MM/DD HH:MM形式)
– 記事タイトル
– 記事URL
– ニュースソース名
– ソースURL
– キーワードカテゴリ
– センチメント(ポジティブ/ネガティブ/ニュートラル)
### 品質管理
– 信頼性の高いニュースソースの優先
– スパムや低品質コンテンツの自動フィルタリング
– エラーログの記録と通知機能
## 出力形式
スプレッドシートは以下のタブで構成:
1. 最新ニュース(直近7日間)
2. アーカイブ(7日以前)
3. 統計情報(キーワード別集計等)
4. システムログ
これにより、AI業界の最新動向を効率的に把握し、質の高い情報を自動的に収集・整理することが可能になります。
このプロンプトでは、必要な機能や要件を具体的に記述することで、ChatGPTがより正確なコードを生成できるようにしています。実装に必要な情報をできるだけ詳細に記述することで、後からの修正を最小限に抑えることができます。
スクレイピング用GASコードを生成する
作成したプロンプトをChatGPTに入力することで、要件に沿ったGASコードが生成されます。
以下は先ほどのプロンプトをChatGPTに入力して、生成されたコードの具体例です。
function fetchRSSFeeds() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const sheet = getOrCreateSheet(spreadsheet, "最新ニュース");
const archiveSheet = getOrCreateSheet(spreadsheet, "アーカイブ");
const logSheet = getOrCreateSheet(spreadsheet, "システムログ");
const keywords = [
"生成AI", "AI生成", "人工知能生成", "ChatGPT", "GPT-4", "OpenAI",
"Google Gemini", "Anthropic Claude", "Perplexity AI", "LLM",
"ファインチューニング", "プロンプトエンジニアリング", "RAG"
];
const rssFeedUrl = "https://news.google.com/rss/search?q=";
let newsData = [];
for (let keyword of keywords) {
const url = `${rssFeedUrl}${encodeURIComponent(keyword)}&hl=ja&gl=JP&ceid=JP:ja`;
const fetchedData = fetchFeed(url, keyword);
newsData = newsData.concat(fetchedData);
}
newsData = removeDuplicates(newsData);
const timestamp = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd HH:mm");
for (let news of newsData) {
sheet.appendRow([
timestamp,
news.title,
news.link,
news.source,
news.sourceLink,
news.category,
news.sentiment
]);
}
archiveOldNews(sheet, archiveSheet);
logSheet.appendRow([timestamp, `成功: ${newsData.length} 件のニュースを収集`]);
}
function fetchFeed(url, category) {
try {
const response = UrlFetchApp.fetch(url);
const xml = XmlService.parse(response.getContentText());
const entries = xml.getRootElement()
.getChild("channel")
.getChildren("item");
const newsList = [];
for (let entry of entries) {
const title = entry.getChild("title").getText();
const link = entry.getChild("link").getText();
const sourceElement = entry.getChild("source");
const source = sourceElement ? sourceElement.getText() : "Unknown";
const sourceLink = sourceElement ? sourceElement.getAttribute("url").getValue() : "Unknown";
const sentiment = analyzeSentiment(title);
newsList.push({
title: title,
link: link,
source: source,
sourceLink: sourceLink,
category: category,
sentiment: sentiment
});
}
return newsList;
} catch (error) {
const logSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("システムログ");
const timestamp = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy/MM/dd HH:mm");
logSheet.appendRow([timestamp, `エラー: ${error.message}`]);
return [];
}
}
function removeDuplicates(newsData) {
const seen = new Set();
return newsData.filter(news => {
if (seen.has(news.link)) return false;
seen.add(news.link);
return true;
});
}
function archiveOldNews(sheet, archiveSheet) {
const rows = sheet.getDataRange().getValues();
const now = new Date();
const archiveData = [];
rows.forEach((row, index) => {
if (index === 0) return;
const date = new Date(row[0]);
if ((now - date) / (1000 * 60 * 60 * 24) > 7) {
archiveData.push(row);
sheet.deleteRow(index + 1);
}
});
archiveData.forEach(row => archiveSheet.appendRow(row));
}
function analyzeSentiment(text) {
const positiveWords = ["良い", "成功", "嬉しい", "素晴らしい"];
const negativeWords = ["悪い", "問題", "失敗", "不満"];
const positive = positiveWords.some(word => text.includes(word));
const negative = negativeWords.some(word => text.includes(word));
if (positive) return "ポジティブ";
if (negative) return "ネガティブ";
return "ニュートラル";
}
function getOrCreateSheet(spreadsheet, sheetName) {
let sheet = spreadsheet.getSheetByName(sheetName);
if (!sheet) {
sheet = spreadsheet.insertSheet(sheetName);
if (sheetName === "最新ニュース") {
sheet.appendRow(["取得日時", "記事タイトル", "記事URL", "ニュースソース名", "ソースURL", "キーワードカテゴリ", "センチメント"]);
} else if (sheetName === "システムログ") {
sheet.appendRow(["日時", "ログメッセージ"]);
}
}
return sheet;
}
生成されたコードには、要件で指定された全ての機能が実装されています。このコードを実際にGASで設定して、実行してみます。
実行とコード改善を繰り返す
ChatGPTにコードを作成してもらったら、GASのプロジェクトにコードを貼り付けて、赤枠内の「実行」を押しましょう。
特にエラーが無く、実行が完了すると下記の赤枠箇所のように「実行完了」のメッセージが表示されます。
GASで実行した際にエラーがでたら、そのエラー文をそのまま下記のようにChatGPTに入力して、修正を依頼しましょう。
ChatGPTにエラーを共有してコードを修正、実行、ChatGPTにエラーを共有してコードを修正、実行…を根気よく続けていけば、コードの知識が無くても正しいGASコードを最終的に作成することが可能です。
また、機能を追加したくなった場合も、例えば、「タイムアウト対策を追加したい」といった具体的な要望をChatGPTに伝えることで、必要なコードの修正案を得ることができます。こうした改善を重ねることで、より安定した運用が可能なスクリプトへと進化させることができます。
スクレイピングが成功すると、下記のようにニュース記事を自動収集してスプレッドシートに反映することが可能になります。
下記の動画でも詳しく解説しております。
GASとChatGPTのAPI連携方法を解説【画像付き】
GASとChatGPTのAPIを連携させることで、GAS上でChatGPTをリアルタイムで活用しながら業務を自動化することができます。ここでは、具体的な連携手順を詳しく解説していきます。
OpenAIのAPIキーを発行する
1.まずは、OpenAI Platformのサイトに遷移して、ログインを行います。(アカウントが無い場合は作成してください。)
2.ログインが完了したら、右上の歯車アイコンを押します。
3.左側メニューから「API Keys」を選択します。
4.「Create new secret key」のボタンを押します。
5.Name欄に自由に名前をいれて、他は既存の設定のまま「Create secret key」のボタンを押します。
6.すると、APIキーが発行されるので「Copy」を押してコピーしましょう。(※APIキーの漏洩にはご注意ください。)
GASのプロパティ設定
1.Googleスプレッドシートに入り、「拡張機能」から「Apps Script」を選択します。
2.左端メニューの最下部にある歯車アイコンを押します。
3.最下部の「スクリプト プロパティを追加」をクリックします。
4.プロパティの欄に適当な名前を入力し、■の箇所に先ほどOpenAI PlatformでコピーしたAPIキーを貼り付けます。完了したら「スクリプトプロパティを保存」を押しましょう。
APIの実行|プロンプト付きで解説
1.左側メニューの「エディター」を選択し、右赤枠内にコードを入力していきます。
コードの例は下記の通りです。「シート名」のシートA列に入力されたキーワードで検索上位を取るための記事の構成をB列に出力する、という内容のコードになります。”YOUR_OPENAI_API_KEY”にOpenAIのAPIキーを入れてください。
// Google Apps Script
function generateSEOArticleStructure() {
const sheetName = "シート名";
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
if (!sheet) {
Logger.log("シートが見つかりませんでした。");
return;
}
const keywords = sheet.getRange(2, 1, sheet.getLastRow() - 1).getValues(); // A列
const outputRange = sheet.getRange(2, 2, sheet.getLastRow() - 1); // B列
const apiKey = "YOUR_OPENAI_API_KEY"; // OpenAI APIキーを設定
const apiUrl = "https://api.openai.com/v1/chat/completions";
const structures = keywords.map(([keyword]) => {
if (!keyword) return [""]; // キーワードが空の場合はスキップ
Utilities.sleep(2000); // リクエスト間隔を設定
try {
const messages = [
{ role: "system", content: "あなたはSEO記事の構成を作成するエキスパートです。" },
{ role: "user", content: `以下のキーワードでSEOで上位を取るための記事構成を作成してください:\n\nキーワード: ${keyword}` },
];
const options = {
method: "post",
contentType: "application/json",
headers: {
Authorization: `Bearer ${apiKey}`,
},
payload: JSON.stringify({
model: "gpt-4o-mini", // モデルを gpt-4o-mini に設定
messages: messages,
max_tokens: 300,
}),
};
const response = UrlFetchApp.fetch(apiUrl, options);
const json = JSON.parse(response.getContentText());
return [json.choices[0].message.content.trim()];
} catch (error) {
Logger.log(`Error processing keyword ${keyword}: ${error}`);
return ["エラー"];
}
});
outputRange.setValues(structures);
}
2.実行を押して、下部に「実行完了」の表示が出たら完了です。
3.A列のキーワード「APIとは」というキーワードに対して、B列に記事の構成が反映されています。
上記の例以外にも、ChatGPTに指示を出しながらAPIを利用して業務を効率化するためのコードを作成して、実行してみてください。
まとめ:ChatGPTを活用したGAS開発の始め方
ChatGPTを活用することで、GAS開発の効率を大きく向上させることができます。
開発を始める際は、まず小規模な自動化タスクから着手し、明確なプロンプトの作成と段階的な改善を心がけましょう。スプレッドシートやドキュメントとの連携も、APIキーの適切な管理のもとで実現できます。セキュリティに十分配慮しながら、組織全体でChatGPTを活用することで、業務効率の向上と競争力の強化につながるでしょう。ぜひ本記事で紹介した手法を参考に、あなたの業務でもChatGPTを活用してみてください。
生成AIの活用にお困りではないですか?
株式会社アドカルは主に生成AIを活用したマーケティングDXや業務効率化に強みを持った企業です。
貴社のパートナーとして、少数精鋭で担当させていただくので、
「生成AIをマーケティング業務に活用したい」
「業務効率を改善したい」
「自社の業務に生成AIを取り入れたい」
とお悩みの方は、ぜひ弊社にご相談ください。
貴社のご相談内容に合わせて、最適なご提案をさせていただきます。
サービスの詳細は下記からご確認ください。無料相談も可能です。