Skip to content

Instantly share code, notes, and snippets.

@nalgeon
Last active October 17, 2023 10:03
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save nalgeon/a6db0827dad7a97da906d6427c070883 to your computer and use it in GitHub Desktop.
Save nalgeon/a6db0827dad7a97da906d6427c070883 to your computer and use it in GitHub Desktop.
Пример работы с подсказками DaData в Google Taблицах

Как подключить скрипт к Гугл-таблице:

  1. Открыть таблицу.
  2. В меню выбрать Расширения > Apps Script
  3. Вставить код из файла suggest-google-sheets.js
  4. Вместо ВАШ_API_КЛЮЧ указать API-ключ из личного кабинета (https://dadata.ru/profile/#info)
  5. Сохранить.
  6. В тулбаре выбрать функцию guessParty и нажать на кнопку Выполнить.
  7. Гугл запросит «разрешения на доступ к вашим данным». Нажать «проверить разрешения», выбрать ваш гугл-аккаунт.
  8. Если появится окно «Эксперты Google не проверяли это приложение» — нажать на «Дополнительные настройки», затем «Перейти на страницу... (небезопасно)».
  9. Нажать на «Разрешить».
  10. Убедиться, что в журнале выполнения написано «Выполнение завершено» и нет ошибок.
  11. Вернуться к таблице.
  12. Указать в ячейке ИНН компании. Например, в ячейке A1 указать 7719402047.
  13. В другой ячейке вызвать функцию guessParty. Например, в ячейчке A2 указать =guessParty(A1)
  14. Увидите результат: название, ОГРН, ИНН, КПП, ОКВЭД и адрес компании.
// Замените на свой API-ключ из личного кабинета (https://dadata.ru/profile/#info)
var API_KEY = "ВАШ_API_КЛЮЧ";
/***
/* Не меняйте код ниже этой строчки
***/
var FORMATTERS = {
party: formatParty,
bank: formatBank
}
function formatParty(suggestion) {
var party = suggestion.data;
return [
["Название", party.name.short_with_opf],
["ОГРН", party.ogrn],
["ИНН", party.inn],
["КПП", party.kpp],
["ОКВЭД", party.okved],
["Дата регистрации", party.state.registration_date],
["Адрес", party.address.value]
];
}
function formatBank(suggestion) {
var bank = suggestion.data;
return [
["Название", bank.name.payment],
["БИК", bank.bic],
["SWIFT", bank.swift],
["Адрес", bank.address.value]
];
}
function guessParty(query) {
return guess("party", query);
}
function guessBank(query) {
return guess("bank", query);
}
function guess(type, query) {
if (API_KEY === "ВАШ_API_КЛЮЧ") {
return "Укажите ваш API-ключ в переменной API_KEY";
}
var response = suggest(type, query);
if (response.suggestions.length > 0) {
return FORMATTERS[type](response.suggestions[0]);
} else {
return "Ничего не найдено";
}
}
function suggest(type, query) {
var url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/" + type;
var payload = '{"query": "' + query + '"}'
var headers = {
"Authorization": "Token " + API_KEY
};
var fetchArgs = {
method: "POST",
contentType: "application/json",
payload: payload,
headers: headers,
muteHttpExceptions: false
};
return JSON.parse(UrlFetchApp.fetch(url, fetchArgs));
}
@ivanshlaev
Copy link

ivanshlaev commented Sep 9, 2022

Добрый день! Подскажите, а если я хочу вернуть не данные организации, а просто данные по неточно введенному адресу, например такие: Город, нас.пункт, и их ФИАС-id, что меняется в коде? Попробовал вот эту часть поменять так (не помогло - возвращает пустые значения):

function formatParty(suggestion) {
var party = suggestion.data;
return [
["Название", party.name.short_with_opf],
["Город", party.city],
["Нас.Пункт", party.settlement],
["ФИАС-id Города", party.city_fias_id],
["ФИАС-id нас.пункта", party.settlement_fias_id]
];
}

@gorgulij
Copy link

Подскажите почему может возникать ошибка?
Exception: You do not have permission to call SpreadsheetApp.openById. Required permissions: https://www.googleapis.com/auth/spreadsheets (line 17).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment