Перейти к содержимому
Odoo Меню
  • Войти
  • Попробовать бесплатно
  • Модули
    Финансы
    • Бухгалтерия
    • Выставление счетов
    • Расходы
    • Таблицы
    • Документооборот
    • Подпись
    Продажи
    • CRM
    • Продажи
    • POS Магазин
    • POS Ресторан
    • Подписки
    • Аренда
    Вебсайты
    • Конструктор вебсайтов
    • eCommerce
    • Блог
    • Форум
    • Онлайн-чат
    • Электронное обучение
    Логистика
    • Склад
    • Производство
    • PLM
    • Закупки
    • Обслуживание
    • Качество
    Отдел кадров
    • Сотрудники
    • Подбор персонала
    • Отпуска
    • Оценка персонала
    • Реферальная программа
    • Автопарк
    Маркетинг
    • SMM
    • E-mail рассылки
    • СМС рассылки
    • Мероприятия
    • Автоматизация маркетинга
    • Опросы
    Услуги
    • Проекты
    • Табели
    • Выездной сервис
    • Поддержка
    • Планирование
    • Встречи
    Продуктивность
    • Обсуждения
    • Согласование
    • IoT
    • VoIP-телефония
    • Knowledge
    • WhatsApp
    Сторонние приложения Модуль Студия Odoo Платформа Odoo Cloud
  • Индустрии
    Розничная торговля
    • Книжный магазин
    • Магазин одежды
    • Мебельный магазин
    • Продуктовый магазин
    • Строительный магазин
    • Магазин игрушек
    Гостинично-ресторанный бизнес
    • Бар и паб
    • Ресторан
    • Фастфуд
    • Гостевой дом
    • Дистрибьютор напитков
    • Отель
    Недвижимость
    • Агентство недвижимости
    • Архитектурное бюро
    • Строительство
    • Управление недвижимостью
    • Ландшафтный дизайн
    • Товарищество собственников жилья
    Консалтинг
    • Бухгалтерская фирма
    • Партнер Odoo
    • Маркетинговое агентство
    • Юридическая фирма
    • Подбор персонала
    • Аудиторское бюро
    Производство
    • Текстиль
    • Металл
    • Мебель
    • Продукты питания
    • Пивоварня
    • Корпоративные сувениры
    Здоровье и фитнес
    • Спортивный комплекс
    • Магазин оптики
    • Фитнес-клуб
    • Велнес-центр
    • Аптека
    • Салон красоты
    Услуги
    • Специалист по бытовым услугам
    • Продажа и обслуживание IT-оборудования
    • Солнечные энергосистемы
    • Производство обуви
    • Клининг
    • Системы ОВКВ
    Прочее
    • Некоммерческая организация
    • Консалтинг в сфере устойчивого развития
    • Аренда рекламных щитов
    • Бизнес по фотосъемке
    • Прокат велосипедов
    • Реселлер программного обеспечения
    Все индустрии
  • Community
    Обучение
    • Видео уроки
    • Документация
    • Сертификация
    • Тренинг
    • Блог
    • Подкаст
    Образование и развитие
    • Образовательная программа
    • Деловая игра Scale Up!
    • Экскурсия в офис Odoo
    ПО
    • Скачать
    • Сравнить версии
    • Релизы
    Сотрудничество
    • Github
    • Форум
    • Мероприятия
    • Перевод
    • Стать партнером
    • Услуги для партнеров
    • Зарегистрировать бухгалтерскую фирму
    Услуги
    • Найти партнера
    • Найти бухгалтера
    • Встреча с экспертом
    • Услуги по внедрению
    • Отзывы клиентов
    • Поддержка
    • Обновления
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Заказать демонстрацию
  • Цены
  • Поддержка

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Бухгалтерия
  • Склад
  • PoS
  • Проекты
  • MRP
All apps
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Чтобы взаимодействовать с сообществом, необходимо зарегистрироваться.
Все посты Люди Значки
Теги (Смотреть все)
odoo accounting v14 pos v15
Об этом форуме
Помощь

How to connect a Google Script to Openerp(odoo) using XML RPC?

Подписаться

Получайте уведомления о появлении активности в этом посте

Этот вопрос был отмечен
12 Ответы
14929 Представления
Аватар
Anabela Damas

Hi, 

I've made a python script using XML  RPC to connect to openerp and create res.partners and it works fine.

Now I wonder if the same is possible in a google script?

I've tried but I can't connect to openerp!

Do you know the library to use, or a clue to start implementing the connection through XML RPC in a google script? 

I've tried to use this code https://github.com/ikikko/Mimic-for-Google-Apps-Script/blob/master/mimic-gas.js , and then this :
 

function teste() {
  var method = "login" ; 
  var request = new XmlRpcRequest("http://192.168.2.141:8086/xmlrpc/common", method); 
  request.addParam('testes'); 
  request.addParam('admin'); 
  request.addParam('password'); 
  request.setAuthentication('admin','password','testes');
  //var request_aut = request.setAuthentication('admin','vi!aveirofast#69');
  //Logger.log(request);
  //Logger.log('___________________________________');
  var response = request.send(); 
  //var response = request_aut.send(); 
  //Logger.log(response);
  //Logger.log(response.parseXML());
  return response.parseXML(); 
};

 

But I always get the error : 

Unable to parse the text. (line 253, file "Code")

253:    return new XmlRpcResponse(Xml.parse(response.getContentText()));

 

Doing Logger.log(response); the log is empthy... 

Thanks

2
Аватар
Отменить
Sehrish

Try this one: http://learnopenerp.blogspot.com/2019/10/connecting-to-odoo-using-xml-rpc.html

Аватар
Jdugomier
Лучший ответ

Hi, 

Here is a very simple / small GSCript to connect to Odoo but using JSONRPC :


function OdooJSONRPC2(db_settings)

{

/**

* Random client id generation. To be provided in jsonrpc calls and returned to differentiate requests if necessary.

*/

this._guid = function() {

function s4() {

return Math.floor((1 + Math.random()) * 0x10000)

.toString(16)

.substring(1);

}

return s4() + s4() + "-" + s4() + "-" + s4() + "-" +

s4() + "-" + s4() + s4() + s4();

}

/**

* Jsonrpc2 call (internal function)

* @param jsonrpc_method : type of jsonrpc method (ex: call)

* @param url : url on which jsonrpc needs to be called

* @param params : json object with the API parameters

**/

this._jsonrpc2_call = function(jsonrpc_method,url,params)

{

var json = JSON.stringify({

"jsonrpc": "2.0",

"method" : jsonrpc_method,

"id" : this.id,

"params": params

});

var headers = {

"Content-Type" : "application/json",

"Accept" : "application/json",

};

if(this.sid)

{ //adds the session_id in the request (in a cookie). Optional because doesn"t exist on the first call (authentication)

headers["Cookie"]="session_id="+this.sid;

}

var options = {

method: "post",

payload : json,

headers : headers,

contentLength : json.length

};

return JSON.parse(UrlFetchApp.fetch(url,options).getContentText());

}

this.search_read = function(model,params)

{

params["model"]=model;

return this._jsonrpc2_call("call",db_settings.base_location + "/web/dataset/search_read",params).result.records;

}

/* constructor : after the methods declaration because some methods are used by constructor */

this.db_settings = db_settings;

this.id = this._guid();

if(this.db_settings["db"] && this.db_settings["login"] && this.db_settings["password"] && this.db_settings["base_location"])

{

this.sid = this._jsonrpc2_call("call",db_settings.base_location + "/web/session/authenticate",db_settings).result.session_id;

}

else

{

throw "Incomplete DB settings required keys are : db, login, password, base_location";

}

}


//Examples

  var odoo = new OdooJSONRPC2({"db": "?", "login": "?","password": "?","base_location": "?"});

var rental_products = odoo.search_read("product.template",{"domain" : [["rental_ok","=","true"]], "fields":["id"]});

var specific_product = odoo.search_read("product.template",{"domain" : [["id","=",52]], "fields":["display_name"]});

var product_by_id = odoo.search_read("product.template",{"domain" : [["id","in",[50,51,52]]], "fields":["display_name"]});

2
Аватар
Отменить
Randy Risser

Thank you for this info! It was extremely helpful.

Randy Risser

Is there any way to create/write records from google script?

Аватар
tommy.henry@5b.com.au
Лучший ответ

Hi there,

This topic seems pretty dead but I was having the exact same issue and managed to figure it out so thought I should post here. The easiest approach I found, which most closely matches the method in the odoo api documentation is as follows:

First: Include the XMLRPC library in your appscript project using the following library code (In your appscript project go to Resources > Library > Add):

My_8O8KRa_MszCVjoC01DTlqpU7Swg-M5

Then, if you are following these odoo api documentation steps:
https://www.odoo.com/documentation/11.0/webservices/odoo.html
you can modify the code as follows to make the same methods work in appscript:

url = <insert server URL>
db = <insert database name>
username = <insert username>
password = <insert password>​
// Authenticate user and get uid:
var common = new XMLRPC.XmlRpcRequest(url + "/xmlrpc/2/common", "authenticate");
common.addParam(db);
common.addParam(username);
common.addParam(password);
common.addParam({});

uid = common.send().parseXML();
// Check access right
var models = new XMLRPC.XmlRpcRequest(url + "/xmlrpc/2/object", "execute_kw");
models.addParam(db);
models.addParam(uid);
models.addParam(password);

models.addParam('res.partner');
models.addParam('check_access_rights');
models.addParam(['read']);
models.addParam({'raise_exception': False});

var response = models.send().parseXML();
// create user
var models = new XMLRPC.XmlRpcRequest(url + "/xmlrpc/2/object", "execute_kw");
models.addParam(db);
models.addParam(uid);
models.addParam(password);

models.addParam('res.partner');
models.addParam('create');
models.addParam([{
'name': "New Partner",
}]);

id = models.send().parseXML();
1
Аватар
Отменить
Randy Risser

Hello, Thanks so much for your reply to this post! Have you tested the script you posted? I can't get it to work. Something seems to be missing.

Randy Risser

One of the errors I am getting.

"TypeError: Cannot call method "addParam" of undefined. (line 10, file "Code")"

Doesn't this:

var common = XMLRPC.XmlRpcRequest(url + "/xmlrpc/2/common", "authenticate");

Need to be somthing like:

var common = new XMLRPC.XmlRpcRequest(url + "/xmlrpc/2/common", "authenticate");

tommy.henry@5b.com.au

yep good catch missed that bit when I was writing it up for this post. I've amended my reply above :)

tommy.henry@5b.com.au

If it's useful I've started building out an odoo api for appscript: 1cz44Ex1_MaQAw6u57aAf3ozA2utiTJarpqxf3wOoZ6tUNnQX6C7Bpre9

or https://github.com/tommyhenry90/odooAppscriptApi

tommy.henry@5b.com.au

project key for above api is: Mz85GDFoKyx2elkECWYElEvQMf9HPR6wp

Randy Risser

Could you give a search_read example yet? I can't seem to figure out the syntax.

Randy Risser

Also, just not saw your post on the API for appscript! That is awesome! The community will really appreciate this! When you get time if you could give examples in your readme for the calls like here: https://github.com/faisalsami/odoo-xmlrpc#usage

tommy.henry@5b.com.au

I've added create, read, update and delete methods to the api now and added some more documentation on github. Please let me know if you find this helpful or run into any issues. :)

Randy Risser

Awesome work! If you could add one more thing.

The "Search and Read" https://www.odoo.com/documentation/11.0/webservices/odoo.html#search-and-read

I use that to get data back from a search with the related field contents. Thanks again for doing this!

tommy.henry@5b.com.au

I added searchRecord and searchReadRecord yesterday and added a bit more documentation on github. should also now be able to update and delete multiple records at once.

Аватар
Fausto R.
Лучший ответ

I will be workiing on this approach next week, so I am very interested.

However, note that GAS (Google Apps Script) is runing on Google servers, so they cannot access an Odoo server in your local network.

This aproach might / should work with Odoo online, though I am still struggling with the right url:port to use.

ps. I am new to this forum, so I cannot post a question yet

1
Аватар
Отменить
Anabela Damas
Автор

Hope that my "like" helps you to get karma ;) For you to post questions about GAS.

OdooBot
thanks Anabela
yes, it helped !!
I already posted my question, thanks

ps. this is the link, still dealing with Python sample scripts before working from GAS


Regards, Fausto | 416-821-3185 | go.theXS.ca/now | simplifying IT

On Fri, Nov 28, 2014 at 9:39 AM, Anabela Damas <adamas-versaointegral-pt@mail.odoo.com> wrote:

Hope that my "like" helps you to get karma ;) For you to post questions about GAS.

--
Anabela Damas
Sent by Odoo S.A. using Odoo about Forum Post False

Аватар
Ludo - 21South
Лучший ответ

What have you tried? Where did your script stop and what was the error? 

I am by no means an expert in google script, but the error might be explained from the OpenERP point of view.

------------

One thing I noticed is that the url of your connection is pointing to port 8086. Have you tried port 8069, which is the default for XML-RPC in OpenERP?

Other than that, the parse error usually means that you are trying to parse something using the wrong format OR the field itself does not exist.

0
Аватар
Отменить
Anabela Damas
Автор

I've update my answer. Thanks for try to help =)

Anabela Damas
Автор

**question

Ludo - 21South

Updated the answer. Perhaps someone with some more experience can answer the question better.

Anabela Damas
Автор

cat /etc/openerp-server.conf | grep xmlrpc xmlrpcs = False xmlrpcs_interface = xmlrpcs_port = 8087 xmlrpc_interface = xmlrpc_port = 8086 xmlrpc = True I'm using the correct port. Thanks

Не оставайтесь в стороне – присоединяйтесь к обсуждению!

Создайте аккаунт сегодня, чтобы получить доступ к эксклюзивным функциям и стать частью нашего замечательного сообщества!

Регистрация
Сообщество
  • Видео уроки
  • Документация
  • Форум
Открытый исходный код
  • Скачать
  • Github
  • Runbot
  • Перевод
Услуги
  • Хостинг Odoo.sh
  • Поддержка
  • Обновление
  • Индивидуальные решения по доработке
  • Образование
  • Найти бухгалтера
  • Найти партнера
  • Стать партнером
О нас
  • Наша компания
  • Активы бренда
  • Cвяжитесь с нами
  • Вакансии
  • Мероприятия
  • Подкаст
  • Блог
  • Клиенты
  • Правовые документы • Конфиденциальность
  • Безопасность
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo – это набор бизнес-модулей с открытым исходным кодом, который закроет все потребности вашей компании: CRM, E-commerce, Бухгалтерия, Склад, POS, управление проектами и др.

Odoo сочетает в себе простоту использования и полную интеграцию всех бизнес-процессов в одной системе.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now