【GAS】特定のキーワードで検索すると表示されるWebサイトをスプシに書き出す
はじめに
お疲れ様です。
おおくまです。
今回は、「【GAS】特定のキーワードで検索すると表示されるWebサイトをスプシに書き出す」ということで、GASやCustomSearchAPI、ProgrammableSearchEngineについてまとめてみました。
少しでも皆様の参考になりますと幸いです。
対象読者
注意点
GASとは
GASとは、GoogleAppsScriptの略で、Googleによって開発されたスクリプトプラットフォームです。
Googleが提供する各種サービスの自動化や連携を行うためのアプリケーションを開発するためのツールとして活用されます。
GASで使用するスクリプト言語は、JavaScriptをベースに作られています。
基本的な文法はJavaScriptと同じなので、JavaScriptを使ったことのある方であれば比較的簡単に使いこなせると思います。
弊社でもGASを使用して、様々な業務の自動化・効率化を行っています。
CustomSearchAPIとは
CustomSearchAPIとは、Googleが提供する検索エンジンのAPIです。
CustomSearchAPIを使用することで、特定のキーワードで検索すると表示されるWebサイトを取得することができます。
ProgrammableSearchEngineとは
ProgrammableSearchEngineとは、Googleが提供するカスタム検索エンジンです。
ProgrammableSearchEngineを使用することで、特定のキーワードで検索すると表示されるWebサイトをカスタマイズすることができます。
実践
では、実際にGASを使用して、特定のキーワードで検索すると表示されるWebサイトをスプシに書き出すように実装してみましょう。
1. CustomSearchAPIとProgrammableSearchEngineの設定
まずは、CustomSearchAPIとProgrammableSearchEngineの設定を行います。
以下の記事を参考に設定を行い、CustomSearchAPIのAPIキーと、ProgrammableSearchEngineのカスタム検索エンジンIDを取得してください。
2. Googleスプレッドシートの作成
次に、Googleスプレッドシートを作成します。
今回は、以下のようなシートを作成しました。
3. GASプロジェクトの作成
まずは、GASプロジェクトを作成します。
コードはサクッとChatGPTに書いてもらいました。
function getGoogleSearchResults() {
// Google Custom Search APIのAPIキーを入力
const apiKey = '**********';
// カスタム検索エンジンIDを入力
const searchEngineId = '**********';
// 検索キーワードを入力
const keyword = 'プログラミング';
// APIリクエストURLを作成
const apiUrl = `https://www.googleapis.com/customsearch/v1?q=${encodeURIComponent(keyword)}&cx=${searchEngineId}&key=${apiKey}`;
// Google SheetsのIDを入力
const spreadsheetId = '**********';
// オリジナルのシート名
const originalSheetName = '【原本】';
try {
// APIリクエストを送信
const response = UrlFetchApp.fetch(apiUrl);
const data = JSON.parse(response.getContentText());
// Google Sheetsを取得
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
// 現在の日付を取得してシート名を作成
const now = new Date();
const formattedDate = Utilities.formatDate(now, Session.getScriptTimeZone(), 'yyyy/MM/dd');
const newSheetName = formattedDate;
// 元のシートをコピーして新しいシートを作成、既に存在する場合は削除して再作成
let sheet = spreadsheet.getSheetByName(newSheetName);
if (sheet) {
spreadsheet.deleteSheet(sheet);
}
const originalSheet = spreadsheet.getSheetByName(originalSheetName);
if (originalSheet) {
sheet = originalSheet.copyTo(spreadsheet).setName(newSheetName);
} else {
throw new Error(`Sheet "${originalSheetName}" not found.`);
}
// シートの範囲をクリア(必要に応じて)
sheet.getRange('C5:D').clearContent();
// 検索結果トップ10をシートに書き込む
if (data.items && data.items.length > 0) {
const results = data.items.slice(0, 10);
results.forEach((result, index) => {
sheet.getRange(5 + index, 3).setValue(result.title); // C列にタイトル
sheet.getRange(5 + index, 4).setValue(result.link); // D列にリンク
});
} else {
Logger.log('No search results found.');
}
// 更新時間をB2に記入
const formattedDateTime = Utilities.formatDate(now, Session.getScriptTimeZone(), 'yyyy/MM/dd HH:mm:ss');
sheet.getRange('B2').setValue(`更新時間:${formattedDateTime}`);
} catch (e) {
Logger.log(`Error: ${e.message}`);
}
}
4. 実行結果
実行結果は以下のようになりました。
最後に
今回は、CustomSearchAPIとProgrammableSearchEngineを用いてGASの使用例をご紹介しましたが、他にも様々な活用方法がありますので、ぜひ活用してみてください。
最後まで読んでいただきありがとうございました。
Discussion