Lines of code | 693 |
Technical Name |
odoo_connect_spreadsheet |
License | OPL-1 |
Website | https://www.github.com/trinanda |
Also available in version | v 15.0 v 14.0 v 13.0 v 12.0 |
Lines of code | 693 |
Technical Name |
odoo_connect_spreadsheet |
License | OPL-1 |
Website | https://www.github.com/trinanda |
Also available in version | v 15.0 v 14.0 v 13.0 v 12.0 |

We are connecting Odoo with Google Spreadsheet using Google Drive and Google Sheet API. On how to set it up, we will provide the guide after you purchased this module, please contact me on Contact information that I provide at the bottom of this module description
Result

Terms
It is forbidden to use this module for prohibited things/harams, such as gambling, banking, riba/usury, selling forbidden food or forbidden drinks, selling cigarettes, alcoholic beverages, pornography, doll, painting of living creatures, religious goods, entertainment, cinema, music, buying and selling animals, lingerie, and another haram/prohibited things.
If anyone violates it, I absolve myself of sin and all that is associated with it.
Pre Requirements
- Google Drive API
- Google Sheet API
Pricing & Quotas
All use of the Google Drive and Sheets API is available at no additional cost. And the more interest is Google Drive and Sheets API has per-minute quotas, and they're refilled every minute, even if you exceed the quota request limits it doesn't incur extra charges and your account is not billed.
Google Sheets API Quotas | ||
---|---|---|
Read requests | Per day per project | Unlimited |
Per minute per project | 300 | |
Per minute per user per project | 60 | |
Write requests | Per day per project | Unlimited |
Per minute per project | 300 | |
Per minute per user per project | 60 |
Google Drive API Quotas | ||
---|---|---|
Queries | Per 100 seconds | 20,000 |
Per day | 1,000,000,000 (1 billion) | |
Per 100 seconds per user | 20,000 |
Here are the current features:
Select any models and its fields dynamically
You can select any models on your Odoo to connect to Google spreadsheet

And you can select any field in the model to display in the spreadsheet

Choose whether you want to connect an existing spreadsheet or create a new one

If do you want to connect to an existing, fill the Google spreadsheet ID

The spreadsheet ID is the ID that showing in the spreadsheet URL like bellow

When you choose the "Existing" option, you will get warning such like this, that indicate you must grant the Google service account email permission first to the existing spreadsheet do you want to connect

To grant permission to the service account email, click on the Share button on the existing spreadsheet

But if you want to create a new spreadsheet instead, then select the "Create New" in the option above, then fill the Spreadsheet Title for the new spreadsheet

You can update the spreadsheet in real-time, schedule action/cron job every (x) times, or you can also update it manually, it depends on your needs

- Realtime
Every action such create, write and unlink on the selected model will update the spreadsheet automatically. Be careful with busy operations on the selected model and huge of rows, considering the quota limit from Google API. On the other hand this will also make your Odoo server be busy because it detects any create, write and unlink/delete on the selected model. But if your server is good enough, there is no problem with this method, because Google API provides quite a lot of request quota. Read more about quotas on the source link listed on the previous slide.
- Schedule Action/Cron Job
The spreadsheet will be updated automatically every (x) time (minutes, hours, days, weeks, and months). You can define the (x) time freely depending on your wants or needs. Go to Settings -> Technical -> Scheduled Actions -> Update spreadsheet, in the example bellow we update the spreadsheet every 1 minutes.
- Manual
The spreadsheet will be updated when the user triggers Update Spreadsheet button
Create new sheets or use the existing

If you specify the Sheet Name and the name already exists in the existing spreadsheet, it will write your
data in the existing sheet, but if there is no same name in the spreadsheet with the name you defined, it
will create a new sheet and write your data on the new one.
Fill data in a specific range, default is A1 notation, we can change it to something like A1:B2, A:A, 1:2, etc...

Clear or overwrite the old data
You can choose whether you want to clear all data in the selected sheet name and replace it with new data, if so check Clear Data to True. Or set it to False if you want to write data to the sheet name without clearing the existing data, but be careful when choosing a range name, because it can overwrite old data (if any) with new data in the selected range.

Grant access to the spreadsheet for certain users
You can grant Write or Reader access to the spreadsheet, just select the contact and make sure their email is set up.

Timezone
By default Odoo displays Datetime according to the user's time zone, for example, the Date Order of Purchase Order in the database is stored at 26-12-2022 03:00:00 (UTC), but if a user's time zone is GMT+7 Date Order will be displayed on 2022-12-26 10:00:00. Interestingly with this option, you can select the timezone you want to display when connecting Odoo with a spreadsheet.

This is a Long Term Support App
Update: 16.0.3.0.0
Append Feature

Now you can select whether you want to update or append values to the spreadsheet.
Determines how existing data is changed when new data is input.
OVERWRITE: The new data overwrites existing data in the areas it is written. (Note: adding data to the end
of the sheet will still insert new rows or columns so the data can be written.).
INSERT_ROWS: Rows are inserted for the new data.
Indicates which dimension an operation should apply to.
ROWS: Operates on the rows of a sheet.
COLUMNS: Operates on the columns of a sheet.
Update: 16.0.2.2.3
Dynamically domain search

Search Domain Preview Record(s)

Search Domain Spreadsheet Result

Update: 16.0.2.0.0
SQL Query feature. Now we can perform SQL queries to the database, preview the results, and send them to the spreadsheet.

The SQL query result

Update: 16.0.1.3.0
Now we can limit the result

Update: 16.0.1.2.0
Now we can order rows by any field on the selected model, and select whether we want to ascend or descend the order

Update: 16.0.1.1.0
Option to show data with its header or not

Contact
If you have any question or want to custom specific features on this module/addons or want to custom another
modules, please contact me on:
Email: trinanda357@gmail.com
Telegram: @da_ti
WhatsApp: +62 822 6181 9233
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module