使用Google Assistant自动化您的词汇表

我发现自己在日常生活中经常遇到的烦恼是遇到一个我不认识的单词或短语,希望快速记录下来以改善我的听写能力。 听起来很熟悉?

该方法指南将指导您设置自动,快速,轻松地向电子表格中添加单词或短语,并从牛津词典中获取其定义的自动化方法。 我们将使用IFTTT创建一个自定义Google Assistant动作并使用Oxford Oxford API来自动检索定义的电子表格,以用作Google表格中的词汇表。 我强烈建议根据您的个人需求修改本指南。 在此方法结尾处详细介绍了脚本文件。

我们将使用的服务:

  • 国际金融贸易展览会
  • Google助手
  • Google表格
  • 牛津字典API

在开始之前,请确保您具有上述服务的帐户并可以访问启用了Google Assistant的设备。 我假设您具有一些基本的编码技能,但是,如果您不了解这些代码片段,请继续阅读相关文档,或在下面发表评论。


  1. 在Google表格中创建电子表格。 我们将在牛津词典中存储单词/短语,其定义以及其条目的链接。
  2. 我们将需要3列:(1)单词/词组,(2)定义和(3)词典链接。
  3. [可选]将行设置为交替的颜色,以提高可读性。
  • 要使行在Google表格中交替显示颜色,请转到格式→交替显示颜色 ,然后继续选择范围A1:C1000 (如有必要,可以在以后随时增加该范围)。
  • 选择预定义的格式样式或创建自己的样式。

4. [可选]通过选择该行来冻结包含列标题的第一行,然后转到查看→冻结→1行。

词汇表的电子表格

如果您以前从未听说过或使用过IFTTT,则它代表If This Then That,并允许您创建链接应用程序和设备的小程序。 我们将使用IFTTT创建一个自定义Google Assistant命令,该命令将一个单词插入到电子表格中。

  1. 导航到IFTTT并创建一个新的applet。
  2. 对于“此”搜索, Google助手→说出带有文字成分的词组。
  • 您可以根据需要自定义命令和响应。 您输入的命令将作为运行此IFTTT小程序的触发器。
  • 我发现短语’ 存储单词$ ‘是最成功的,但这可能有所不同。 $表示您希望使用的文本成分,可以是单个单词或短语。
Google Assistant触发器示例

3.对于“ that”,搜索Google表格→向电子表格添加行。

  • 格式化行: TextField单元格表示我们要插入的单词或短语。 这将插入到电子表格的第一列中。
Google表格操作示例

4.保存小程序并进行测试。

  • 保存小程序后,请继续使用支持Google Assistant的设备测试小程序。 如果成功,您应该在电子表格中看到一个新行,并带有单词/短语。
  • 示例:存储单词happy

注意 :在处理API时,Postman是一个很好的工具,可以轻松快速地创建HTTP请求并可视化返回的数据。 查看他们的文档以开始使用。

牛津词典API将使我们能够提取单词或短语的定义。 我建议测试Postman(或类似工具)中的API调用,以确保身份验证成功。 您需要在牛津词典帐户上创建一个应用,以便检索您的应用ID和密钥。

  1. 测试牛津字典API。
  • API基本网址:https://od-api.oxforddictionaries.com/api/v1
  • 通过导航到牛津词典网站上的API凭据(一旦登录)并查看您的应用程序详细信息,可以找到应用程序ID和密钥。
  • 需要将两个标头添加到请求: app_idapp_key ,并带有适当的值。

我们将向/ entries / {source_lang} / {word_id} / definitions端点发出GET请求,以检索定义。

示例HTTP请求以获取单词“ happy”的定义:
  • 我们将专注于感官对象内返回的主要定义。
GET请求返回的JSON

2.在Google表格中创建脚本,以便在插入新行(即添加新单词/词组)时运行。

  • Google表格具有内置的脚本编辑器,可让您创建和运行以Google Apps脚本(一种基于JavaScript的脚本语言)编写的脚本。 如果不熟悉JavaScript和/或Google Apps脚本,请查看其文档。
  • 从电子表格中,选择工具→脚本编辑器,这将打开带有模板.gs文件的代码编辑器。
  • 创建一个函数onNewRow() ,只要在电子表格中插入新行,该函数就会被调用。
 函数onNewRow(e){ 
var sheet = SpreadsheetApp.getActiveSheet();
if(e.changeType =='INSERT_ROW'){
//获取插入的行的索引
var row = sheet.getLastRow();
//插入单词/短语
var range = sheet.getRange(row,1);
var短语= range.getValue();

//以升序对单词进行排序
sheet.sort(1);
}
}
  • 选择编辑→当前项目的触发器,然后添加一个运行onNewRow()函数的新触发器,其中包含 电子表格中的事件和change
项目触发设置

3.创建一个函数以将定义添加到电子表格。

  • 创建一个函数addDefinition() ,该函数将接受3个参数sheetrowstatement ,并将定义插入适当的单元格中。
  • 在请求中使用短语时,我们需要将下划线“ _”替换为任何空格。
  • 重要的是,对希望检索其定义的单词或短语进行编码,以确保正确编码任何特殊字符。
  • 请记住用您的凭据替换app_id和app_key占位符。
 函数addDefinition(工作表,行,词组){ 
var base_url ='https:// od api.oxforddictionaries.com/api/v1/entries/zh/';

//小写并用'_'代替空格
statement.toLowerCase();
短语=短语。替换(/ \ s / g,'_');

//编码单词/词组
短语= encodeURI(短语);

//将词组附加到基本网址
var url =(base_url.concat(phrase))。concat('/ definitions');

//向牛津词典API发出GET请求,然后检索定义。
var options = {
“ method”:“ GET”,
“标题”:{
“ app_id”:“ YOUR_APP_ID”,
“ app_key”:“ YOUR_APP_KEY”
}
};

var response = UrlFetchApp.fetch(url,options);
var responseObj = JSON.parse(response);
var definition = responseObj.results [0] .lexicalEntries [0] .entries [0] .senses [0] .definitions [0];

//插入定义
sheet.getRange(row,2).setValue(definition);
}
  • onNewRow()调用我们的addDefinition()函数,以便每当插入新行时都将调用它。 将以下代码放在sheet.sort(1);上。
  addDefinition(工作表,行,短语); 

创建一个函数以添加单词/短语牛津词典URL。

  • 由于我们在电子表格中存储了单词或短语的基本定义,因此我们不妨查看更多详细信息。 因此,我们将自动在牛津词典中插入指向该单词或短语条目的链接。
  • 创建一个函数fillDictionaryLink() ,该函数将接受3个参数sheetrowphrase ,并将链接插入到适当的单元格中。
 函数fillDictionaryLink(工作表,行,短语){ 
var base_url ='https://en.oxforddictionaries.com/definition/';

//用空格代替“-”
短语=短语。替换(/ \ s / g,'-');

//将词组附加到基本网址
var link = base_url.concat(phrase);

//插入链接
sheet.getRange(row,3).setValue(link);
}
  • onNewRow()调用我们的fillDictionaryLink()函数,以便在插入新行时调用它。 将以下代码放在对addDefinition()函数的调用下面。
  addDefinition(工作表,行,短语); 

如果一切成功,现在您应该可以对Google助手说出触发短语,后者会在电子表格中插入带有给定单词或短语的新行,然后在牛津词典中添加一个定义并链接到其条目。

Google助手并不总是能理解我尝试告诉您保存的单词或短语。 此操作方法不会导致100%的成功率,并且期望偶尔需要重复触发语句。

结果电子表格示例

一些外部资源可能会帮助您使用本指南中使用的服务。

牛津词典API“入门” – Hitch

牛津词典拥有多种语言的大量词典,并通过……提供了其数据。

www.hitchhq.com

电子表格服务| 应用脚本 Google开发人员

此服务允许脚本创建,访问和修改Google表格文件。 另请参阅将数据存储在…中的指南。

developers.google.com