网络搜索已经成为我们生活之中必不可缺的一个部分,甚至已经成为了我们的日常生活。但是,如果我们想将搜索结果存储于别处,该怎么办呢?比如存储在电子表格中…这是一种非常便捷的数据操作方式。在本文中,我们将展示如何通过 ONLYOFFICE 宏来在电子表格中插入 Google 搜索结果。

选择 Google Web Search API

API 的意思是“应用程序编程接口”。正是在这些接口之上,我们构建起了当今的互联网世界。API 无处不在。无论是天气预报应用,还是电话上的通讯工具。API 是 Web 应用程序用于同服务器进行通讯的协议。自不用说,获取 Google 搜索结果也是需要 API 的。

为方便起见,我们建议通过 Rapid API 平台来获取 Google Web Search API。Rapid API 平台是一个拥有数百万开发者用户、提供数千种 API 选项的平台。订阅方面则有 freefreemium 以及 paid 版本。每个 API 都带有相应的代码片段,可帮助您节省大量时间。

在成功注册 Rapid API 账号后,我们可以找找 Google Web Search API。此时有多个可选项。


为了测试宏的效果,我们选择了这一 API。其提供了每月包含 300 次请求的 freemium 版本,足够我们大概了解宏的能力了。如果您需要更多请求,可选择不同的 API 或订阅付费版本。

注意! 每个 API 都将为您提供唯一的访问密钥。您的宏只有在使用已订阅的 API 时才能正常工作。

设置 API 参数

在 API 页面中,我们可以看到能够用于搜索请求的各种参数。这里我们将不会更改 Rapid API、Request URL 以及 Header Parameters。这些是 API 与服务器进行互动时所必须的参数。*Required Parameters *中包含我们的搜索请求。这里我们写入“ONLYOFFICE Editors”。

同时您还能在请求中添加一些可选参数。在本例中,我们可指定需要检索的页面、结果数量(最大为 100,默认为 20)、搜索请求的位置、时间过滤条件以及国家。这里我们先使用默认的参数值。这样,检索到的数据中将包含从第一页开始的前 20 个英语结果,且不会使用时间过滤条件。

现在我们需要选择一种用于发出 API 请求的语言。这里将选择在 JavaScript 中进行 XML/HTTP 请求。我们前往右侧面板,并在 Code Snippets 中选择 JavaScript > XML/HttpRequest

在继续使用宏之前,我们来看看返回的数据。直接在页面中查看即可,只需点击 Test Endpoint 按钮。结果将展示在右侧面板中。


API 请求返回了 2 个项目。我们需要的是其中的 results 数组。其中包含了需要被粘贴至电子表格中的搜索结果。如果我们多看几眼,就会发现每个搜索结果数组都有 titlelink 以及 snippet 元素。稍后,我们将仅获取 titlelink 元素,并将其插入到电子表格中。现在我们还是回到 Code Snippets 中去复制 XML/HTTP 请求。

在一列中插入两行

在这里的宏中,我们将对 titlelink 值进行组合,然后将其插入同一列中。

我们打开 ONLYOFFICE 编辑器,新建一个宏并将上方复制的 XML/HTTP 请求粘贴进去。接着前往 readystatechange 事件后开始的 IF 语句并移除包含 console.log 方法的一行代码。我们不需要这个方法,这里会添加我们自己的代码。

首先我们需要将从请求中获取的数据转换为 JSON 格式。为了实现这一目标,我们在这里使用 JSON.parse 方法,并将结果存储在 oData 变量中:

(function()
{const data = null;const xhr = new XMLHttpRequest();xhr.withCredentials = true;xhr.addEventListener("readystatechange", function () {if (this.readyState === this.DONE) {const oData = JSON.parse(xhr.responseText);

然后我们开始筛选数据。首先,获取 results 数组并将其存储在单独的变量中:

const { results } =  oData;

现在我们可访问此数组中的 titlelink 元素。接下来的步骤是使用 map 方法将 titlelink 值整合到一起,并将其存储在 dataComb 变量中。这样其就会成为 1 行,并在稍后被插入至电子表格单元格中:

 const dataComb = results.map((item) => ({title: item.title,link: item.url,}));

现在我们的 dataComb 变量中就已经有了所需元素。每个元素中都包含 titlelink 值。我们现在的目标是将其插入单元格中。这里我们需要使用 for loop 语句。该语句会遍历变量中的各个元素并将其转换为字符串,然后分别插入到相应的单元格中:

 const dataComb = results.map((item) => ({title: item.title,link: item.url,}));

首先,我们创建 nRow 变量。然后将其用作索引,以在 GetRangeByNumber 方法中来选择行。我们会对 nRow 变量进行递增,这样在迭代时会自动切换至下一行。这里对 dataComb 中的变量进行遍历、将其转换为字符串并使用 SetValue 方法将值插入所选行。为了实现这一目标,我们会使用在参数中声明的 i 变量作为索引。同时还使用了 AutoFit 方法来调整单元格尺寸。

完整的宏代码如下:

(function()
{const data = null;const xhr = new XMLHttpRequest();xhr.withCredentials = true;xhr.addEventListener("readystatechange", function () {if (this.readyState === this.DONE) {const oData = JSON.parse(xhr.responseText);const { results } =  oData;const dataComb = results.map((item) => ({title: item.title,link: item.url,}));let nRow = 0;for (let i = 0; i < dataComb.length; i++) {const text = JSON.stringify(dataComb[i]); var oWorksheet = Api.GetActiveSheet();oWorksheet.GetRangeByNumber(nRow, 0).SetValue(text);oWorksheet.GetRangeByNumber(nRow, 0).AutoFit(false, true);nRow++;}}});xhr.open("GET", "https://google-search26.p.rapidapi.com/search?q=Onlyoffice%20editors&hl=en&tbs=qdr%3Aa");xhr.setRequestHeader("X-RapidAPI-Key", "3a059ddf9bmshc40ba13a409d0abp12b76bjsn8fd6f316f49b");xhr.setRequestHeader("X-RapidAPI-Host", "google-search26.p.rapidapi.com");xhr.send(data);
})();

现在让我们来运行一下宏,看看效果如何:

在单独的列中插入行

在我们的宏变体中,titlelink 值将被插入两个不同的列。
为了实现这一目标,我们会使用 map 方法来将 titlelink 值保存在两个变量中:

 const { results } =  oData;const title = results.map((item) => item.title);const link = results.map((item) => item.link);

现在我们来创建 2 个循环。一个用于遍历 title 变量并将其中的值插入首行:

 const { results } =  oData;const title = results.map((item) => item.title);const link = results.map((item) => item.link);

一个用于遍历 link 变量并将其中的值插入第二行:

 let nRowLink = 0;for (let i = 0; i < link.length; i++) {const text = JSON.stringify(link[i]); oWorksheet.GetRangeByNumber(nRowLink, 1).SetValue(text);oWorksheet.GetRangeByNumber(nRowLink, 1).AutoFit(false, true);nRowLink++;}

注意,这里我们将 GetRangeByNumber 方法的第二个参数更改成了 1。这一参数与列的位置相对应。因此,link 值将插入至第二列中。

完整的宏代码如下:

(function()
{const data = null;const xhr = new XMLHttpRequest();xhr.withCredentials = true;xhr.addEventListener("readystatechange", function () {if (this.readyState === this.DONE) {const oData = JSON.parse(xhr.responseText);const { results } =  oData;const title = results.map((item) => item.title);const link = results.map((item) => item.link);let nRowTitle = 0;for (let i = 0; i < title.length; i++) {const text = JSON.stringify(title[i]); var oWorksheet = Api.GetActiveSheet();oWorksheet.GetRangeByNumber(nRowTitle, 0).SetValue(text);oWorksheet.GetRangeByNumber(nRowTitle, 0).AutoFit(false, true);nRowTitle++;}let nRowLink = 0;for (let i = 0; i < link.length; i++) {const text = JSON.stringify(link[i]); oWorksheet.GetRangeByNumber(nRowLink, 1).SetValue(text);oWorksheet.GetRangeByNumber(nRowLink, 1).AutoFit(false, true);nRowLink++;}}});xhr.open("GET", "https://google-search26.p.rapidapi.com/search?q=Onlyoffice%20editors&hl=en&tbs=qdr%3Aa");
xhr.setRequestHeader("X-RapidAPI-Key", "3a059ddf9bmshc40ba13a409d0abp12b76bjsn8fd6f316f49b");
xhr.setRequestHeader("X-RapidAPI-Host", "google-search26.p.rapidapi.com");xhr.send(data);
})();

现在我们来运行一下这个宏:

希望这个宏能帮助您以更便捷的方式实现日常任务与数据结构化方面的自动化工作。这只是 ONLYOFFICE 宏功能的一小部分。

我们的宏功能是基于 JavaScript 的,这就确保了其灵活性,您可轻松根据自己的需求进行定制。我们强烈建议您上手试试,创建自己的宏。欢迎随时提问,也欢迎与我们分享您的想法和宏。我们已做好与您探讨和合作的准备。祝您的探索之旅一帆风顺!

实用链接

ONLYOFFICE 宏 API
借助 ONLYOFFICE 高亮大于某个值的格子
借助 ONLYOFFICE 宏进行去重
GitHub 上的 ONLYOFFICE

借助 ONLYOFFICE 宏在电子表格中插入 Google 搜索结果相关推荐

  1. java程序示例_Java程序中的Google搜索示例

    java程序示例 Sometime back I was looking for a way to search Google using Java Program. I was surprised ...

  2. 在Android应用中实现Google搜索的例子

    有一个很简单的方法在你的 Android 应用中实现 Google 搜索.在这个例子中,我们将接受用户的输入作为搜索词,我们将使用到 Intent.ACTION_WEB_SEARCH . Google ...

  3. 借助 ONLYOFFICE 宏进行去重

    在本文中,我们将介绍一个简短的宏.您可使用它来从电子表格中去掉重复项.就功能性而言,其与 Excel 中已得到广泛使用的 "去重" 宏类似.不过,由于这是一个基于 JavaScri ...

  4. 借助 ONLYOFFICE 宏通过 OpenAI 数据填充单元格

    AI 技术现已取得重大进展,同时也成为了颇具价值的工具,可帮助我们自动化工作流.在​​之前的帖子​​中,我们提到过可使用 OpenAI 生成文章的 ONLYOFFICE 宏.那么在本文中,我们将为您演 ...

  5. word2013插入excel对象报错_在 Excel 电子表格中插入对象

    如果在 Excel 或支持 OLE 的任何程序(如 Word)之间复制信息,可以将信息复制为 链接对象 或 嵌入对象 . 链接对象与嵌入对象之间的主要区别是数据存储位置,以及对象在放置到目标位置后 目 ...

  6. 代码实现WordPress 在文章内容的段落中插入广告google adsense

    有很多人都希望wordpress能在文章的内容中插入广告,而且google adsense也推出了文章内嵌广告,能提升用户阅读的体验度,这里有两种方法在wordpress文章的内容中插入广告.一个是用 ...

  7. 十大高明的Google搜索技巧

    前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您 ...

  8. Google搜索技巧、使用Google的其它专业搜索

    前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您 ...

  9. 如何稳定高效利用GOOGLE搜索

    前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您 ...

最新文章

  1. README 规范和项目文档规范
  2. 测试工具–super-mack
  3. 用C++写的 Levenshtein 算法实现
  4. 集成平台集群任务动态分派
  5. php上传预览源码,php批量上传五[带预览]-PHP源码
  6. js整体缩小网页_SEO网页优化的原则是什么?
  7. 小红书消息中间件的运维实践与治理之路
  8. 企业微信_Windows版本调试
  9. Laravel 5.1 源码阅读
  10. sklearn网格搜索GridSearchCV得到各个评价指标的均值与方差
  11. python的数值类型和运算符_Python全栈工程师(数值类型、运算符)
  12. WebLogic—安装
  13. 在逍遥模拟器下安装XPOSED框架
  14. 乐高叉车wedo教案_15乐高教育wedo编程机器人手臂教案
  15. 个人力扣刷题笔记 LCP 03. 机器人大冒险
  16. 如何运用MATLAB实现K-MEANS聚类分析
  17. 《Java小游戏实现》:坦克大战
  18. 华为机试 放苹果
  19. 利用百分位数确定考核指标的具体数字
  20. Sublime常用操作

热门文章

  1. 地震勘探里关于“等时”与“穿时”问题的总结
  2. 【npm】node-gpy 内嵌npm版本升级 (解决node-gpy 内嵌 npm版本过低识别不了2022 msvs_version版本问题)
  3. 【Greenplum 6.9.0】Greenplum Command Center 6.2安装失败教程
  4. 猿创征文|前端到全栈,一名 IT 初学者的学习与成长之路
  5. (7)UVM objection机制
  6. 校园O2O商铺平台-前台展示系统
  7. html form width,HTML form input width
  8. 刘晓燕语法笔记——并列句
  9. 下载高通 SDM845 Android 11.0 开源代码
  10. 淮阴工学院java考试_java毕业设计_springboot框架的淮阴工学院学生成绩管理系统...