https://cve 获取 CVE 描述/摘要。 circl.lu API。但是,当我运行脚本时,遇到 cveID 未定义的问题,并且似乎未正确调用填充摘要的函数 (populateCveSummaries()
)。这是我当前的脚本:
function getCveSummary(cveID) {
var apiUrl = 'https://cve.circl.lu/api/cve/' + cveID;
try {
Logger.log('Fetching CVE summary for: ' + cveID); // Log the CVE ID
var response = UrlFetchApp.fetch(apiUrl); // Fetch data from the API
var json = JSON.parse(response.getContentText()); // Parse the JSON response
Logger.log('CVE ID used in API call: ' + cveID); // Log the CVE ID for debugging
// Check if summary exists, otherwise return a default message
if (json && json.summary) {
return json.summary;
} else {
return 'No summary available for this CVE';
}
} catch (e) {
Logger.log('Error fetching CVE summary for: ' + cveID); // Log the error
return 'Error fetching CVE summary'; // Error handling
}
}
function populateCveSummaries() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var dataRange = sheet.getRange('A2:A'); // CVE IDs in column A starting from A2
var data = dataRange.getValues(); // Get the values (CVE IDs) from column A
Logger.log('Data retrieved from Column A: ' + JSON.stringify(data)); // Log the raw data from column A
for (var i = 0; i < data.length; i++) {
var cveID = data[i][0]; // Extract each CVE ID from the 2D array
Logger.log('Processing row ' + (i + 2) + ' - CVE ID: ' + cveID); // Log which row is being processed
if (cveID && cveID.trim() !== "") {
var summary = getCveSummary(cveID); // Fetch the summary for the CVE
Logger.log('Summary fetched for ' + cveID + ': ' + summary); // Log the fetched summary
sheet.getRange(i + 2, 4).setValue(summary); // Set the summary in column D (index 4)
Logger.log('Setting summary for row ' + (i + 2) + ': ' + summary); // Log cell update
} else {
Logger.log('No valid CVE ID found in row ' + (i + 2)); // Log if no CVE ID is found in a row
}
}
}
当我执行脚本时,cveID 似乎未定义,如执行日志所示。这是我的执行日志的相关部分:
Execution log
11:28:23 AM Notice Execution started
11:28:23 AM Info Fetching CVE summary for: undefined
11:28:23 AM Info CVE ID used in API call: undefined
11:28:24 AM Notice Execution completed
看起来 populateCveSummaries()
没有按预期工作,并且
cveID
没有填充 A 列中的值。因此,我无法正确获取 CVE 摘要。
我的环境 我正在使用 Google Sheets Apps 脚本。 CVE ID 位于 A 列中,从单元格 A2 开始。 我正在使用公共 API 从 https://cve.circl.lu/api/cve/. 获取 CVE 摘要
屏幕截图 - Google 表格、Circl:
我尝试过的
◉我用Logger.log()
调试,发现
cveID
未定义。◉函数
populateCveSummaries()
似乎未正确调用或未按预期循环数据。
我需要什么帮助
◉为什么即使 A 列中存在值,cveID 仍显示为未定义?
◉如何确保函数populateCveSummaries()
循环遍历每一行并正确获取数据?◉关于如何正确设置数据变量或更改范围以获得正确值有什么建议吗?
Google 表格结构
Google Sheet 的结构是:A 列:CVE(例如 CVE-2021-24499)
B 列:触发的规则
C 栏:类别
D 列:CVE 描述(我要填充的列)
E 栏:参考资料
F 栏:评论
我是编码新手,任何帮助或建议将不胜感激。
提前谢谢您!