РЕДАКТИРОВАТЬ (01.05.2020): обновлено для работы с Oxford Dictionary API v2 и исправлено дублирование слов.
Постоянное раздражение, с которым я сталкиваюсь в повседневной жизни, - это когда я встречаю слово или фразу, которые мне неизвестны, и хочу быстро их записать, чтобы улучшить свою дикцию. Звучит знакомо?
Этот пост с практическими рекомендациями проведет вас через настройку автоматизированного способа быстрого и простого добавления слов или фраз в электронную таблицу и извлечения их определения из Оксфордского словаря. Мы настроим электронную таблицу, которая будет использоваться в качестве нашего словарного списка в Google Таблицах, используя IFTTT для создания настраиваемого действия Google Assistant и автоматического получения определений с помощью Oxford Dictionaries API. Я настоятельно рекомендую адаптировать это руководство к вашим личным потребностям. Файл сценария, подробно описанный в конце этого руководства, доступен здесь.
Услуги, которые мы будем использовать:
- IFTTT
- Гугл Ассистент
- Google Таблицы
- Oxford Dictionaries API
Прежде чем мы начнем, убедитесь, что у вас есть учетная запись для вышеуказанных служб и доступ к устройству с поддержкой Google Assistant. Я предполагаю, что у вас есть некоторые базовые навыки кодирования, однако, если вы не понимаете фрагменты кода, просмотрите соответствующую документацию или оставьте комментарий ниже.
Начиная с версии 2 Oxford Dictionary API, учетная запись Free работать не будет. Поэтому вам понадобится учетная запись Prototype (максимум 1000 звонков в месяц) или обновите свою учетную запись до платной.
Шаг 1. Создайте и настройте таблицу Google
- Создайте электронную таблицу в Google Таблицах. Мы будем хранить слово / фразу, его определение и ссылку на его статью в Оксфордском словаре.
- Нам понадобятся 3 столбца: (1) слово / фраза, (2) определение и (3) словарная ссылка.
- [Необязательно] Отформатируйте строки так, чтобы они были чередующимися цветами, чтобы улучшить читаемость.
- Чтобы сделать строки чередующихся цветов в Google Таблицах, перейдите в Формат → Чередующиеся цвета и выберите диапазон A1: C1000 (его всегда можно увеличить на более позднем этапе. если необходимо).
- Выберите предопределенный стиль форматирования или создайте свой собственный.
4. [Необязательно] Закрепите первую строку, содержащую заголовки столбцов, выбрав строку и перейдите в Просмотр → Закрепить → 1 строка.
Шаг 2. Создайте действие Google Ассистента с помощью IFTTT
Если вы никогда раньше не слышали и не использовали IFTTT, это означает If This Then That и позволяет создавать апплеты, связывающие ваши приложения и устройства. Мы будем использовать IFTTT для создания настраиваемой команды Google Assistant, которая вставляет слово в нашу электронную таблицу.
- Перейдите к IFTTT и создайте новый апплет.
- Для «это» выполните поиск Google Ассистент → Произнесите фразу с текстовым ингредиентом.
- Вы можете настроить команды и ответ по своему желанию. Введенные вами команды будут действовать как триггер для запуска этого апплета IFTTT.
- Я обнаружил, что фраза «Сохранить слово $» оказалась наиболее удачной, однако она может варьироваться. $ Представляет собой текстовый ингредиент, который вы хотите использовать, и может быть отдельным словом или фразой.
3. Для "это" выполните поиск в Google Таблицах → Добавить строку в электронную таблицу.
- Форматированная строка: ячейка TextField представляет слово или фразу, которую мы хотим вставить. Он будет вставлен в первый столбец нашей таблицы.
4. Сохраните апплет и протестируйте его.
- После того, как вы сохранили свой апплет, протестируйте его с помощью устройства с поддержкой Google Assistant. В случае успеха вы должны увидеть новую строку в своей электронной таблице с заданным словом / фразой.
- Пример: сохраните слово счастливый.
Шаг 3. Используйте Oxford Dictionary API в Google Таблицах
Примечание. При работе с API Почтальон - отличный инструмент для простого и быстрого создания HTTP-запросов и визуализации возвращаемых данных. Ознакомьтесь с их документацией, чтобы начать.
API Оксфордского словаря позволит нам извлекать определения слов или фраз. Я рекомендую протестировать вызовы API в Postman (или аналогичном инструменте), чтобы убедиться, что аутентификация прошла успешно. Вам нужно будет создать приложение в своей учетной записи Oxford Dictionaries, чтобы получить свой идентификатор приложения и ключ.
- Тестирование Оксфордского словаря 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 »