РЕДАКТИРОВАТЬ (01.05.2020): обновлено для работы с Oxford Dictionary API v2 и исправлено дублирование слов.

Постоянное раздражение, с которым я сталкиваюсь в повседневной жизни, - это когда я встречаю слово или фразу, которые мне неизвестны, и хочу быстро их записать, чтобы улучшить свою дикцию. Звучит знакомо?

Этот пост с практическими рекомендациями проведет вас через настройку автоматизированного способа быстрого и простого добавления слов или фраз в электронную таблицу и извлечения их определения из Оксфордского словаря. Мы настроим электронную таблицу, которая будет использоваться в качестве нашего словарного списка в Google Таблицах, используя IFTTT для создания настраиваемого действия Google Assistant и автоматического получения определений с помощью Oxford Dictionaries API. Я настоятельно рекомендую адаптировать это руководство к вашим личным потребностям. Файл сценария, подробно описанный в конце этого руководства, доступен здесь.

Услуги, которые мы будем использовать:

Прежде чем мы начнем, убедитесь, что у вас есть учетная запись для вышеуказанных служб и доступ к устройству с поддержкой Google Assistant. Я предполагаю, что у вас есть некоторые базовые навыки кодирования, однако, если вы не понимаете фрагменты кода, просмотрите соответствующую документацию или оставьте комментарий ниже.

Начиная с версии 2 Oxford Dictionary API, учетная запись Free работать не будет. Поэтому вам понадобится учетная запись Prototype (максимум 1000 звонков в месяц) или обновите свою учетную запись до платной.

Шаг 1. Создайте и настройте таблицу Google

  1. Создайте электронную таблицу в Google Таблицах. Мы будем хранить слово / фразу, его определение и ссылку на его статью в Оксфордском словаре.
  2. Нам понадобятся 3 столбца: (1) слово / фраза, (2) определение и (3) словарная ссылка.
  3. [Необязательно] Отформатируйте строки так, чтобы они были чередующимися цветами, чтобы улучшить читаемость.
  • Чтобы сделать строки чередующихся цветов в Google Таблицах, перейдите в Формат → Чередующиеся цвета и выберите диапазон A1: C1000 (его всегда можно увеличить на более позднем этапе. если необходимо).
  • Выберите предопределенный стиль форматирования или создайте свой собственный.

4. [Необязательно] Закрепите первую строку, содержащую заголовки столбцов, выбрав строку и перейдите в Просмотр → Закрепить → 1 строка.

Шаг 2. Создайте действие Google Ассистента с помощью IFTTT

Если вы никогда раньше не слышали и не использовали IFTTT, это означает If This Then That и позволяет создавать апплеты, связывающие ваши приложения и устройства. Мы будем использовать IFTTT для создания настраиваемой команды Google Assistant, которая вставляет слово в нашу электронную таблицу.

  1. Перейдите к IFTTT и создайте новый апплет.
  2. Для «это» выполните поиск Google Ассистент → Произнесите фразу с текстовым ингредиентом.
  • Вы можете настроить команды и ответ по своему желанию. Введенные вами команды будут действовать как триггер для запуска этого апплета IFTTT.
  • Я обнаружил, что фраза «Сохранить слово $» оказалась наиболее удачной, однако она может варьироваться. $ Представляет собой текстовый ингредиент, который вы хотите использовать, и может быть отдельным словом или фразой.

3. Для "это" выполните поиск в Google Таблицах → Добавить строку в электронную таблицу.

  • Форматированная строка: ячейка TextField представляет слово или фразу, которую мы хотим вставить. Он будет вставлен в первый столбец нашей таблицы.

4. Сохраните апплет и протестируйте его.

  • После того, как вы сохранили свой апплет, протестируйте его с помощью устройства с поддержкой Google Assistant. В случае успеха вы должны увидеть новую строку в своей электронной таблице с заданным словом / фразой.
  • Пример: сохраните слово счастливый.

Шаг 3. Используйте Oxford Dictionary API в Google Таблицах

Примечание. При работе с API Почтальон - отличный инструмент для простого и быстрого создания HTTP-запросов и визуализации возвращаемых данных. Ознакомьтесь с их документацией, чтобы начать.

API Оксфордского словаря позволит нам извлекать определения слов или фраз. Я рекомендую протестировать вызовы API в Postman (или аналогичном инструменте), чтобы убедиться, что аутентификация прошла успешно. Вам нужно будет создать приложение в своей учетной записи Oxford Dictionaries, чтобы получить свой идентификатор приложения и ключ.

  1. Тестирование Оксфордского словаря API.
  • URL-адрес базы API: https://od-api.oxford dictionaries.com/api/v2
  • Идентификатор приложения и ключ можно найти, перейдя к учетным данным API на сайте Oxford Dictionary (после входа в систему) и просмотрев сведения о своем приложении.
  • К запросу необходимо добавить два заголовка: app_id и app_key с соответствующими значениями.

Мы будем делать GET-запрос к конечной точке / entries / {source_lang} / {word_id} для получения определений со строкой запроса: ? Fields = definitions

  • Вы можете добавить еще одну строку запроса, чтобы сделать запрос менее чувствительным к строгим совпадениям: strictMatch = false
  • Конечный URL-адрес должен выглядеть примерно так: https://od-api.oxforddictionaries.com/api/v2 / entry / en-gb / your_word? Fields = definitions & strictMatch = false

  • Мы сосредоточимся на основном определении, возвращаемом в объекте чувств.

2. Создайте сценарий в Google Таблицах, который будет запускаться всякий раз, когда вставляется новая строка, т. Е. Добавляется новое слово / фраза.

  • В Google Sheets есть встроенный редактор сценариев, позволяющий создавать и запускать сценарии, написанные на Google Apps Script (язык сценариев, основанный на JavaScript). Если вы не знакомы с JavaScript и / или Google Apps Script, ознакомьтесь с их документацией.
  • В электронной таблице выберите «Инструменты» → «Редактор сценариев», чтобы открыть редактор кода с файлом .gs шаблона.
  • Создайте функцию onNewRow (), которая вызывается всякий раз, когда в электронную таблицу вставляется новая строка.
function onNewRow(e) {
 var sheet = SpreadsheetApp.getActiveSheet();
  if(e.changeType == 'INSERT_ROW') {
    // Get index of row inserted
    var row = sheet.getLastRow();
    // Get word/phrase inserted
    var range = sheet.getRange(row, 1);
    var phrase = range.getValue();
    
   if (alreadyExists(sheet, phrase, row)) {
      sheet.deleteRow(row);
      Logger.log(phrase + " already exists!");
    } else {
      fillDictionaryLink(sheet, row, phrase);
      addDefinition(sheet, row, phrase);
    
      // Sort words in ascending order
      sheet.sort(1);
      
      Logger.log(phrase + " added!");
    }
  } 
}
  • Выберите «Правка» → «Триггеры текущего проекта» и добавьте новый триггер, запускающий функцию onNewRow () с событиями из электронной таблицы и при изменении.

3. Создайте функцию, чтобы проверить, существует ли слово в вашей таблице.

  • Создайте функцию alreadyExists (), которая будет принимать 3 аргумента sheet, word и row.
  • Он получит все значения из первого столбца (слова) и сравнит их с новым словом.
  • Если слово уже существует, новая добавленная строка удаляется.
function alreadyExists(sheet, word, latestRow) {
  var lastRowIndex = sheet.getLastRow();
  var words = sheet.getRange(2,1,lastRowIndex).getValues();
  var wordsFlat = words.map(function(row) {
    return row[0];
  });
  indexOf = wordsFlat.indexOf(word) + 2;
  Logger.log(latestRow + ", " + indexOf);
if (indexOf != -1 && indexOf != latestRow) {
    return true;
  }
  return false;
}

4. Создайте функцию для добавления определения в электронную таблицу.

  • Создайте функцию addDefinition (), которая будет принимать 3 аргумента sheet, row и фразу, и вставьте определение в соответствующая ячейка.
  • При использовании фразы в запросе необходимо заменять любые пробелы символом подчеркивания «_».
  • Важно, чтобы мы кодировали слово или фразу, для которой хотим получить определение, чтобы гарантировать правильное кодирование любых специальных символов.
  • Не забудьте заменить заполнители app_id и app_key своими учетными данными.
function addDefinition(sheet, row, phrase) {
  var base_url = 'https://od api.oxforddictionaries.com/api/v1/entries/en/';
  
  // To lowercase and substitute whitespace for '_'
  phrase.toLowerCase();
  phrase = phrase.replace(/\s/g, '_');
  
  // Encode word/phrase
  phrase = encodeURI(phrase);
  
  // Append phrase to base URL
  var url = (base_url.concat(phrase)).concat('/definitions');
  
  // Make a GET request to Oxford Dictionary API and retreive the definition/s.
  var options  = {
    "method": "GET",
    "headers": {
      "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"][1]["entries"][0]["senses"][0]["definitions"];
  
  // Insert definition 
  sheet.getRange(row, 2).setValue(definition);
}
  • Вызовите нашу функцию addDefinition () из onNewRow (), чтобы она вызывалась всякий раз, когда вставляется новая строка. Поместите следующий код над sheet.sort (1);
addDefinition(sheet, row, phrase);

Шаг 4. Добавьте ссылку на Оксфордский словарь для каждой новой записи.

Создайте функцию для добавления URL-адреса слова / фразы Оксфордского словаря.

  • Поскольку мы храним базовое определение слова или фразы в нашей электронной таблице, мы можем захотеть просмотреть более подробную информацию. Поэтому мы автоматически вставим ссылку на слово или фразу в Оксфордском словаре.
  • Создайте функцию fillDictionaryLink (), которая будет принимать 3 аргумента sheet, row и фразу, и вставьте ссылку в соответствующая ячейка.
function fillDictionaryLink(sheet, row, phrase) {
  var base_url = 'https://en.oxforddictionaries.com/definition/';
  
  //Substitute whitespace for '-'
  phrase = phrase.replace(/\s/g, '-');
  
  // Append phrase to base URL
  var link = base_url.concat(phrase);
  
  // Insert link 
  sheet.getRange(row, 3).setValue(link);
}
  • Вызовите нашу функцию fillDictionaryLink () из onNewRow (), чтобы она вызывалась всякий раз, когда вставляется новая строка. Разместите следующий код под вызовом функции addDefinition ().
addDefinition(sheet, row, phrase);

Шаг 5: получайте удовольствие и экспериментируйте!

Если все прошло успешно, теперь вы сможете произнести фразу-триггер своему помощнику Google, который вставит новую строку в вашу электронную таблицу с заданным словом или фразой, а затем добавит определение и ссылку на ее запись в Оксфордском словаре.

Google Assistant не всегда понимает слово или фразу, которые я пытаюсь сказать ему, чтобы сохранить. Это практическое руководство не дает 100% успеха, и вам придется иногда повторять свое триггерное предложение.

Ресурсы

Некоторые внешние ресурсы, которые могут помочь вам со службами, используемыми в этом руководстве.



Oxford Dictionaries API« Начало работы - Hitch
Oxford Dictionaries содержит огромное количество словарей на нескольких языках, а данные к ним доступны через… www.hitchhq.com »