如今,logo 徽标种类繁多,查找徽标参考可能有点棘手,有可能导致混淆。然而,有了 ONLYOFFICE 宏,您就可以自动完成这一过程。在本文中,我们将向您展示如何创建一个宏,该宏可以同时从外部 API 获取多个徽标原型,并将其插入电子表格。

访问 API
在本教程中,我们将使用 API Ninjas 提供的 Logo API。API Ninjas 是一个在线平台,提供一系列有关 API 的资源和见解。该平台还提供一系列免费 API,开发人员可将其纳入自己的项目。具体来说,徽标 API 允许访问各种公司的徽标图像。
构建宏
首先,我们以活动工作表为目标:
// Get the active worksheet var oWorksheet = Api.GetActiveSheet();
然后,我们获取文档上的选区。该选区中单元格的值将用于 API 请求:
var selectedRange = Api.GetSelection()
然后,我们添加逻辑,为要插入文档的数据设置标题。首先,我们创建一个包含字段名称("name"、"ticker"、"image")和列字母的数组:
// Define a mapping of values to insert into specific columns
var valuesToInsert = {
"name": "B",
"ticker": "C",
"image": "D"
};在映射列和值后,我们循环查看 valuesToInsert 对象中的每个字段名称。对于每个字段,我们都会获取相应的单元格,并检查该单元格是否为空。如果单元格为空,则使用 oCell.SetValue() 方法将与字段相关联的预定义值插入单元格:
// Loop through the values to insert and populate empty cells
for (var value in valuesToInsert) {
var oCell = oWorksheet.GetRange(valuesToInsert[value] + "1");
if (!oCell.GetValue()) oCell.SetValue(value);
}然后,我们使用 selectedRange.ForEach() 函数遍历选定区域中的每个单元格。对于每个单元格,它都会获取该单元格的值。如果该值存在,就会向 API 发出 AJAX 请求。然后在成功回调中处理响应数据:
// Iterate through each cell in the selected range
selectedRange.ForEach(function (cell) {
var value = cell.GetValue();
if (value) {
// Make an AJAX request to an API to retrieve data based on the cell value
$.ajax({
method: 'GET',
url: 'https://api.api-ninjas.com/v1/logo?name=' + value,
headers: { 'X-Api-Key': 'yourAPIkey' },
contentType: 'application/json',
success: function(result) {
}在 AJAX 成功回调中,我们检索 API 响应。然后,代码会遍历响应数据,并将检索到的数据填充到工作表的特定列中。currentRow 变量决定要填充的行,相应的列则填充数据。AutoFit 函数用于根据填充的数据调整列宽:
// Iterate through the API response and populate data into specific columns
for (var i = 0; i < result.length; i++) {
var data = result[i];
var currentRow = cell.GetRow() + i - 1;
// Populate data into specific columns and adjust column width
oWorksheet.GetRangeByNumber(currentRow, 1).SetValue(data.name);
oWorksheet.GetRangeByNumber(currentRow, 1).AutoFit(false, true);
oWorksheet.GetRangeByNumber(currentRow, 2).SetValue(data.ticker);
oWorksheet.GetRangeByNumber(currentRow, 2).AutoFit(false, true);
oWorksheet.GetRangeByNumber(currentRow, 3).SetValue(data.image);
oWorksheet.GetRangeByNumber(currentRow, 3).AutoFit(false, true);
}整个宏代码如下:
(function() {
// Get the active worksheet
var oWorksheet = Api.GetActiveSheet();
// Get the currently selected range of cells
var selectedRange = Api.GetSelection();
// Define a mapping of values to insert into specific columns
var valuesToInsert = {
"name": "B",
"ticker": "C",
"image": "D"
};
// Loop through the values to insert and populate empty cells
for (var value in valuesToInsert) {
var oCell = oWorksheet.GetRange(valuesToInsert[value] + "1");
if (!oCell.GetValue()) oCell.SetValue(value);
}
// Iterate through each cell in the selected range
selectedRange.ForEach(function (cell) {
var value = cell.GetValue();
if (value) {
// Make an AJAX request to an API to retrieve data based on the cell value
$.ajax({
method: 'GET',
url: 'https://api.api-ninjas.com/v1/logo?name=' + value,
headers: { 'X-Api-Key': 'yourAPIkey' },
contentType: 'application/json',
success: function(result) {
console.log(result);
// Iterate through the API response and populate data into specific columns
for (var i = 0; i < result.length; i++) {
var data = result[i];
var currentRow = cell.GetRow() + i - 1;
// Populate data into specific columns and adjust column width
oWorksheet.GetRangeByNumber(currentRow, 1).SetValue(data.name);
oWorksheet.GetRangeByNumber(currentRow, 1).AutoFit(false, true);
oWorksheet.GetRangeByNumber(currentRow, 2).SetValue(data.ticker);
oWorksheet.GetRangeByNumber(currentRow, 2).AutoFit(false, true);
oWorksheet.GetRangeByNumber(currentRow, 3).SetValue(data.image);
oWorksheet.GetRangeByNumber(currentRow, 3).AutoFit(false, true);
}
},
error: function ajaxError(jqXHR) {
console.error('Error: ', jqXHR.responseText);
}
});
}
});
})();现在,让我们运行宏,看看它是如何工作的!
我们希望这个宏能迅速成为您的宝贵财富。ONLYOFFICE API 的通用性和功能为定制和自动执行任务创造了巨大的空间。
在您深入研究宏制作的同时,不要忽视ONLYOFFICE API所提供的各种可能性。如果您有任何问题或创新想法,我们鼓励您通过评论或与我们联系来与我们分享。您的见解很有价值,我们对合作的潜力感到兴奋。祝您在探索过程中好运!

渝公网安备50010702505508