了解最新技术文章
在我们的 以前的职务 ,我们根据一个VBA的参考资料,建立了一个全功能的办公宏。 我们的一个用户 .今天,我们想把它提升一个层次,并添加一些WWISAPI功能。
惠克斯 ,简称"谁是?"是一个重要的互联网协议,使用户能够访问有关域名和IP地址的全面信息。它是检索有关注册所有人、行政和技术联系人、注册和到期日期、域名服务器、甚至负责域名注册的组织的详细资料的宝贵资源。
为了获得一个访问WWISAPI,我们将使用一个解决方案提供的API尼尼哈斯。
… 阿皮忍者网站 是一个在线平台,提供各种资源和对API的见解。它还提供了开发人员可以在项目中使用的免费API的选择。该网站旨在成为开发人员寻找信息、工具和实例以提高其API开发技能的一个有用的目的地。
该平台提供了代码片段,以协助提出HHTML请求:
var domain = 'example.com'$.ajax({ method: 'GET', url: 'https://api.api-ninjas.com/v1/whois?domain=' + domain, headers: { 'X-Api-Key': 'your_API_key'}, contentType: 'application/json', success: function(result) { console.log(result); }, error: function ajaxError(jqXHR) { console.error('Error: ', jqXHR.responseText); } });
现在让我们把这个合并起来。 阿贾克斯 请求进入我们的宏!我们代码的前几行保持完整。只不过我们在这里找到了细胞的价值 A4 .这次细胞的值 A2 足够:
var sheet = Api.GetActiveSheet();var domainValue = sheet.GetRange("A2").GetValue();var dateRange = sheet.GetRange("D1:D10");
然后,我们启动一个GET请求到API端点中指定的 阿匹尔 变量:
$.ajax({ method: 'GET', url: apiUrl, headers: { 'X-Api-Key': 'your_API_key' }, contentType: 'application/json', success: function(result) { console.log(result);
在一个成功的API响应之后,我们开始处理数据。我们将UNIX时间戳转换为 发明日期 , 期满日期 ,以及 更新日期 使用javascrr的可读格式 约会日期 反对。格式化的日期存储在变量中 formattedCreationDate , formattedExpirationDate ,以及 形式的 日期 :
// Convert creation_date to a more readable format var unixTimestamp = result.creation_date; var creationDate = new Date(unixTimestamp * 1000); var formattedCreationDate = creationDate.toDateString(); // Convert expiration_date to a more readable format var expirationTimestamp = result.expiration_date; var expirationDate = new Date(expirationTimestamp * 1000); var formattedExpirationDate = expirationDate.toDateString(); // Convert updated_date to a more readable format var updatedTimestamp = result.updated_date; var updatedDate = new Date(updatedTimestamp * 1000); var formattedUpdatedDate = updatedDate.toDateString();
要在电子表格中填充所检索的域信息,我们使用 前面的 在…上打圈 三角形的 变量。循环在指定范围内迭代每个单元格 (D1:D10) .在循环中,我们使用 range.GetRow() 把它存储在行变量中:
var oRange = sheet.GetRange("E" + row);
电池的电流值是通过 range.GetValue() 储存在 牛 租金 e variable:
var currentValue = range.GetValue();
基于 现价 ,我们使用开关语句来确定适当的操作。例如,如果 现价 是"域名",我们设定了 结果名称 使用相应的单元格 橙色.定值(结果.域名_名称) :
switch (currentValue) { case "domain name": oRange.SetValue(result.domain_name); break;
同样,我们处理其他案件,例如 登记员 , WWIS服务器 , 更新日期 , 发明日期 , 期满日期 , 姓名服务器, 和 数字安全标准 :
oRange.SetValue(result.registrar); break; case "whois server": oRange.SetValue(result.whois_server); break; case "updated date": oRange.SetValue(formattedUpdatedDate); break; case "creation date": oRange.SetValue(formattedCreationDate); break; case "expiration date": oRange.SetValue(formattedExpirationDate); break; case "name servers": oRange.SetValue(result.name_servers.join(", ")); break; case "dnssec": oRange.SetValue(result.dnssec); break; default: // Handle other cases if needed break; } });
最后,我们定义了一个重新加载函数 Api.asc_calculate(Asc.c_oAscCalculateType.All) 方法在完成循环后重新计算电子表格。这将确保新填充的值反映在电子表格中:
reload(); // Invoke reload function after the loop is completed }, error: function ajaxError(jqXHR) { console.error('Error: ', jqXHR.responseText); } });function reload() { let reloadInterval = setInterval(function() { Api.asc_calculate(Asc.c_oAscCalculateType.All); }, 100); }
整个宏代码如下:
(function(){ var sheet = Api.GetActiveSheet();var domainValue = sheet.GetRange("A2").GetValue();var dateRange = sheet.GetRange("D1:D10");var apiUrl = 'https://api.api-ninjas.com/v1/whois?domain=' + domainValue; $.ajax({ method: 'GET', url: apiUrl, headers: { 'X-Api-Key': 'your_API_key' }, contentType: 'application/json', success: function(result) { console.log(result); // Convert creation_date to a more readable format var unixTimestamp = result.creation_date; var creationDate = new Date(unixTimestamp * 1000); var formattedCreationDate = creationDate.toDateString(); // Convert expiration_date to a more readable format var expirationTimestamp = result.expiration_date; var expirationDate = new Date(expirationTimestamp * 1000); var formattedExpirationDate = expirationDate.toDateString(); // Convert updated_date to a more readable format var updatedTimestamp = result.updated_date; var updatedDate = new Date(updatedTimestamp * 1000); var formattedUpdatedDate = updatedDate.toDateString(); dateRange.ForEach(function(range) { var row = range.GetRow(); var oRange = sheet.GetRange("E" + row); var currentValue = range.GetValue(); switch (currentValue) { case "domain name": oRange.SetValue(result.domain_name); break; case "registrar": oRange.SetValue(result.registrar); break; case "whois server": oRange.SetValue(result.whois_server); break; case "updated date": oRange.SetValue(formattedUpdatedDate); break; case "creation date": oRange.SetValue(formattedCreationDate); break; case "expiration date": oRange.SetValue(formattedExpirationDate); break; case "name servers": oRange.SetValue(result.name_servers.join(", ")); break; case "dnssec": oRange.SetValue(result.dnssec); break; default: // Handle other cases if needed break; } }); reload(); // Invoke reload function after the loop is completed }, error: function ajaxError(jqXHR) { console.error('Error: ', jqXHR.responseText); } });function reload() { let reloadInterval = setInterval(function() { Api.asc_calculate(Asc.c_oAscCalculateType.All); }); } })();
现在,让我们运行宏,看看它是如何工作的!
我们希望这个宏被证明是一个有用的工具,让您能够有效地检索和显示重要的域细节。ONLYOFFICEAPI提供的灵活性和功能为定制和自动化任务提供了巨大的可能性。
我们鼓励您探索仅仅ONLYOFFICEAPI的潜力,并通过构建自己的宏来释放您的创造力。