Public Procurement Survey is a COZE BOT that provides bidding information posted on the websites of the Japanese government, independent administrative agencies, local governments, etc.
I have developed a COZE BOT called Public Procurement Survey, so I would like to introduce it to you.
This COZE BOT was selected as the most creative bot in the Coze July AI Bot Challenge by the COZE official Discord site.
I am participating in the #AIChatbotWritingContest hosted by Coze and HackerNoon.
function doGet(e) {
// クエリパラメータの取得とデフォルト値の設定
var query = e.parameter.Query;
if (!query) {
return ContentService.createTextOutput("Error: 'Query' parameter is required.").setMimeType(ContentService.MimeType.TEXT);
}
var count = e.parameter.Count || '1';
var issueDate = e.parameter.CFT_Issue_Date || '2024-04-01/';
var url = 'https://www.kkj.go.jp/api/?Query=' + encodeURIComponent(query) + '&Count=' + encodeURIComponent(count) + '&CFT_Issue_Date=' + encodeURIComponent(issueDate);
var response = UrlFetchApp.fetch(url);
var xml = response.getContentText();
// XMLをパース
var document = XmlService.parse(xml);
var root = document.getRootElement();
// SearchResults要素を取得
var searchResults = root.getChild('SearchResults');
if (!searchResults) {
Logger.log("SearchResults要素が見つかりません。");
return ContentService.createTextOutput("SearchResults要素が見つかりません。").setMimeType(ContentService.MimeType.TEXT);
}
// SearchResult要素を取得
var searchResult = searchResults.getChildren('SearchResult');
if (searchResult.length === 0) {
Logger.log("SearchResult要素が見つかりません。");
return ContentService.createTextOutput("SearchResult要素が見つかりません。").setMimeType(ContentService.MimeType.TEXT);
}
// データを抽出
var data = searchResult.map(function(result) {
var obj = {};
result.getChildren().forEach(function(child) {
obj[child.getName()] = child.getText();
});
return obj;
});
// データをログに出力して確認
Logger.log(JSON.stringify(data));
// スプレッドシートにデータを書き込む
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// データが存在するか確認
if (data.length > 0 && Object.keys(data[0]).length > 0) {
// ヘッダーを取得
var headers = Object.keys(data[0]);
// 最終行の次の行に書き込む
var lastRow = sheet.getLastRow();
// ヘッダーが無い場合は追加
if (lastRow === 0) {
sheet.appendRow(headers);
lastRow = 1;
}
// データを書き込む
data.forEach(function(row) {
var values = headers.map(function(header) {
return row[header];
});
sheet.appendRow(values);
});
// 結果をJSON形式で返す
return ContentService.createTextOutput(JSON.stringify(data)).setMimeType(ContentService.MimeType.JSON);
} else {
Logger.log("データが存在しないか、変換に失敗しました。");
return ContentService.createTextOutput("データが存在しないか、変換に失敗しました。").setMimeType(ContentService.MimeType.TEXT);
}
}