Skip to Content
Odoo Menú
  • Registra entrada
  • Prova-ho gratis
  • Aplicacions
    Finances
    • Comptabilitat
    • Facturació
    • Despeses
    • Full de càlcul (IA)
    • Documents
    • Signatura
    Vendes
    • CRM
    • Vendes
    • Punt de venda per a botigues
    • Punt de venda per a restaurants
    • Subscripcions
    • Lloguer
    Imatges de llocs web
    • Creació de llocs web
    • Comerç electrònic
    • Blog
    • Fòrum
    • Xat en directe
    • Aprenentatge en línia
    Cadena de subministrament
    • Inventari
    • Fabricació
    • PLM
    • Compres
    • Manteniment
    • Qualitat
    Recursos humans
    • Empleats
    • Reclutament
    • Absències
    • Avaluacions
    • Recomanacions
    • Flota
    Màrqueting
    • Màrqueting Social
    • Màrqueting per correu electrònic
    • Màrqueting per SMS
    • Esdeveniments
    • Automatització del màrqueting
    • Enquestes
    Serveis
    • Projectes
    • Fulls d'hores
    • Servei de camp
    • Suport
    • Planificació
    • Cites
    Productivitat
    • Converses
    • Validacions
    • IoT
    • VoIP
    • Coneixements
    • WhatsApp
    Aplicacions de tercers Odoo Studio Plataforma d'Odoo al núvol
  • Sectors
    Comerç al detall
    • Llibreria
    • Botiga de roba
    • Botiga de mobles
    • Botiga d'ultramarins
    • Ferreteria
    • Botiga de joguines
    Food & Hospitality
    • Bar i pub
    • Restaurant
    • Menjar ràpid
    • Guest House
    • Distribuïdor de begudes
    • Hotel
    Immobiliari
    • Agència immobiliària
    • Estudi d'arquitectura
    • Construcció
    • Gestió immobiliària
    • Jardineria
    • Associació de propietaris de béns immobles
    Consultoria
    • Empresa comptable
    • Partner d'Odoo
    • Agència de màrqueting
    • Bufet d'advocats
    • Captació de talent
    • Auditoria i certificació
    Fabricació
    • Textile
    • Metal
    • Mobles
    • Menjar
    • Brewery
    • Regals corporatius
    Salut i fitness
    • Club d'esport
    • Òptica
    • Centre de fitness
    • Especialistes en benestar
    • Farmàcia
    • Perruqueria
    Trades
    • Servei de manteniment
    • Hardware i suport informàtic
    • Sistemes d'energia solar
    • Shoe Maker
    • Serveis de neteja
    • Instal·lacions HVAC
    Altres
    • Nonprofit Organization
    • Agència del medi ambient
    • Lloguer de panells publicitaris
    • Fotografia
    • Lloguer de bicicletes
    • Distribuïdors de programari
    Browse all Industries
  • Comunitat
    Aprèn
    • Tutorials
    • Documentació
    • Certificacions
    • Formació
    • Blog
    • Pòdcast
    Potenciar l'educació
    • Programa educatiu
    • Scale-Up! El joc empresarial
    • Visita Odoo
    Obtindre el programari
    • Descarregar
    • Comparar edicions
    • Novetats de les versions
    Col·laborar
    • GitHub
    • Fòrum
    • Esdeveniments
    • Traduccions
    • Converteix-te en partner
    • Services for Partners
    • Registra la teva empresa comptable
    Obtindre els serveis
    • Troba un partner
    • Troba un comptable
    • Contacta amb un expert
    • Serveis d'implementació
    • Referències del client
    • Suport
    • Actualitzacions
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Programar una demo
  • Preus
  • Ajuda

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

  • CRM
  • e-Commerce
  • Comptabilitat
  • Inventari
  • PoS
  • Projectes
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
Etiquetes (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Etiquetes (View all)
odoo accounting v14 pos v15
About this forum
Ajuda

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

Subscriure's

Get notified when there's activity on this post

This question has been flagged
12 Respostes
14914 Vistes
Avatar
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
Avatar
Descartar
Sehrish

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

Avatar
Jdugomier
Best Answer

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
Avatar
Descartar
Randy Risser

Thank you for this info! It was extremely helpful.

Randy Risser

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

Avatar
tommy.henry@5b.com.au
Best Answer

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
Avatar
Descartar
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.

Avatar
Fausto R.
Best Answer

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
Avatar
Descartar
Anabela Damas
Autor

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

Avatar
Ludo - 21South
Best Answer

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
Avatar
Descartar
Anabela Damas
Autor

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

Anabela Damas
Autor

**question

Ludo - 21South

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

Anabela Damas
Autor

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

Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Registrar-se
Community
  • Tutorials
  • Documentació
  • Fòrum
Codi obert
  • Descarregar
  • GitHub
  • Runbot
  • Traduccions
Serveis
  • Allotjament a Odoo.sh
  • Suport
  • Actualització
  • Desenvolupaments personalitzats
  • Educació
  • Troba un comptable
  • Troba un partner
  • Converteix-te en partner
Sobre nosaltres
  • La nostra empresa
  • Actius de marca
  • Contacta amb nosaltres
  • Llocs de treball
  • Esdeveniments
  • Pòdcast
  • Blog
  • Clients
  • Informació legal • Privacitat
  • Seguretat
الْعَرَبيّة 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 és un conjunt d'aplicacions empresarials de codi obert que cobreix totes les necessitats de la teva empresa: CRM, comerç electrònic, comptabilitat, inventari, punt de venda, gestió de projectes, etc.

La proposta única de valor d'Odoo és ser molt fàcil d'utilitzar i estar totalment integrat, ambdues alhora.

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