Kết nối API Bing
創建於:2025年1月7日
創建於:2025年1月7日
Crafting a script
I’m digging into a JavaScript snippet for Google Apps Script. It reads keywords from "Keywords" sheet, uses fetch for API data, and outputs to the "Result" sheet.
Grabbing and processing
OK, let me see. Extracting data from the "Keywords" sheet, iterating through each keyword, fetching API results, parsing JSON, and subsequently filling the "Result" sheet.
Fetching and assembling
I’m gathering keywords, hitting URLs to grab API data, and parsing results into the "Result" sheet. This method should streamline the process effectively.
Piecing together API results
Gathering data from the "Keywords" sheet, fetching API results, and logging errors for each keyword. Results are neatly stored in the "Result" sheet.
Thought about API integration in Google Sheets cho 27 giây
Dưới đây là một ví dụ mã Google Apps Script (JavaScript) để đọc danh sách từ khóa từ cột A của sheet "Keywords", gửi từng từ khóa đến API, sau đó lưu kết quả vào sheet "Result" với 4 cột: title, url, caption, và keyword tương ứng.
Cách sử dụng:
getApiResults()
.function getApiResults() { // Lấy đối tượng Spreadsheet var ss = SpreadsheetApp.getActiveSpreadsheet(); // Lấy 2 sheet: "Keywords" và "Result" var sheetKeywords = ss.getSheetByName("Keywords"); var sheetResult = ss.getSheetByName("Result"); // (Tuỳ chọn) Xoá dữ liệu cũ trên sheet "Result" nếu muốn // sheetResult.clearContents(); // Tìm số hàng cuối cùng của sheet Keywords var lastRow = sheetKeywords.getLastRow(); if (lastRow < 1) return; // Nếu không có dữ liệu thì thoát // Lấy toàn bộ dữ liệu cột A (bắt đầu từ hàng 1 hoặc 2 tuỳ bạn có tiêu đề hay không) // Ở ví dụ này, giả sử hàng 1 là tiêu đề và bắt đầu đọc từ hàng 2: var data = sheetKeywords.getRange(2, 1, lastRow - 1, 1).getValues(); // URL API var apiUrl = 'https://bing-web-search4.p.rapidapi.com/bing-search'; // Lặp qua từng từ khoá for (var i = 0; i < data.length; i++) { var keyword = data[i][0]; if (!keyword) { continue; // Nếu ô trống thì bỏ qua } // Body gửi lên API var payload = { keyword: keyword, page: 1, lang: 'vi', region: 'vn' }; // Tuỳ chỉnh options cho UrlFetchApp var options = { method: 'post', contentType: 'application/json', muteHttpExceptions: true, headers: { 'x-rapidapi-key': 'a1538c1820msh3028bc132631bf0p19a85fjsn69c4ab8bcdb1', 'x-rapidapi-host': 'bing-web-search4.p.rapidapi.com' }, payload: JSON.stringify(payload) }; try { // Gửi request đến API var response = UrlFetchApp.fetch(apiUrl, options); var resultJson = JSON.parse(response.getContentText()); // Lấy mảng kết quả search_results var searchResults = resultJson.search_results; if (searchResults && searchResults.length) { for (var j = 0; j < searchResults.length; j++) { var item = searchResults[j]; // Ghi dữ liệu vào sheet "Result" sheetResult.appendRow([ item.title || "", item.url || "", item.caption || "", keyword ]); } } } catch (error) { // Nếu có lỗi Logger.log("Lỗi khi lấy dữ liệu cho keyword: " + keyword + " - " + error); } } }
Giải thích mã:
sheetKeywords.getRange(2, 1, lastRow - 1, 1).getValues()
lấy giá trị từ ô A2 đến A(lastRow).for
, mỗi giá trị keyword
sẽ được gửi đến API bằng phương thức POST.JSON.parse
) và ta lấy mảng search_results
.search_results
có ba trường chính là title
, url
, và caption
. Ta ghi chúng kèm với keyword
gốc vào sheet Result.Bạn có thể tùy chỉnh, ví dụ như thay đổi phần lấy dữ liệu từ hàng 1 nếu không dùng hàng tiêu đề, hoặc xóa toàn bộ dữ liệu cũ trên sheet Result trước khi chạy nếu cần. Chúc bạn thành công!
Fetching URL status
I’m pulling data from column B, using UrlFetchApp to retrieve URLs with "muteHttpExceptions". Then, verifying response codes to update column D appropriately.
Thought about URL status checker cho 5 giây
Dưới đây là một ví dụ mã Google Apps Script (JavaScript) để kiểm tra mã trạng thái (status code) của một URL. Script sẽ:
"Result"
."Result"
với URL ở cột B (bắt đầu từ hàng 2).checkUrlStatusCode()
để thực thi.function checkUrlStatusCode() { // Mở Spreadsheet đang hoạt động var ss = SpreadsheetApp.getActiveSpreadsheet(); // Lấy sheet tên "Result" var sheet = ss.getSheetByName("Result"); // Tìm số hàng cuối cùng có dữ liệu var lastRow = sheet.getLastRow(); // Nếu chưa có dữ liệu hoặc chỉ có tiêu đề, thoát if (lastRow < 2) return; // Lấy dãy dữ liệu từ cột B, bắt đầu ở hàng 2 // (Giả sử hàng 1 là tiêu đề) var urlData = sheet.getRange(2, 2, lastRow - 1, 1).getValues(); // Lặp qua danh sách URL for (var i = 0; i < urlData.length; i++) { var url = urlData[i][0]; // URL ở cột B var rowIndex = i + 2; // Hàng hiện tại trong sheet // Bỏ qua nếu ô trống if (!url) continue; try { // Thực hiện fetch URL // Chú ý: cần {muteHttpExceptions: true} để không bị dừng script khi URL trả về mã lỗi var response = UrlFetchApp.fetch(url, { muteHttpExceptions: true }); var statusCode = response.getResponseCode(); // Ghi mã trạng thái vào cột D sheet.getRange(rowIndex, 4).setValue(statusCode); } catch (error) { // Ghi lại lỗi nếu fetch không thành công (ví dụ URL sai, domain không tồn tại) sheet.getRange(rowIndex, 4).setValue('Error: ' + error); } } }
Giải thích:
sheet.getRange(2, 2, lastRow - 1, 1).getValues()
: Lấy nội dung từ cột B (cột 2), hàng 2 đến hàng lastRow
.UrlFetchApp.fetch(url, { muteHttpExceptions: true })
: Gửi request đến URL, không quăng lỗi nếu mã trả về không phải 200.getResponseCode()
: Lấy mã trạng thái HTTP (vd: 200, 404, 503…).sheet.getRange(rowIndex, 4).setValue(statusCode)
: Ghi kết quả mã trạng thái vào cột D (cột 4).