Skip to main content
iVentureTeam

google_slide_viewer

Paste a Google Docs link into a text field and get the deck embedded on the form. The URL is rewritten by a regular expression, and the starting page comes from a companion field named by convention.

Siddharth JambukiyaSiddharth JambukiyaOdoo Techno-Functional Consultant
August 27, 2026Updated August 27, 20265 min read
Technical namegoogle_slide_viewer
Field typeschar, text
Viewsform
Moduleweb, present in every Odoo database
Used in coreUsed where a hosted presentation should be shown on a record
VersionsOdoo 20.0, Odoo 19.0, Odoo 18.0, Odoo 17.0
No-code setupNo. The embed and its companion page field are set in view XML
Alternativespdf_viewer, iframe_wrapper, url, image_url

What the slide viewer field does

Presentations tend to live outside the ERP, and linking to them means sending the user away. For content that is meant to be read in context, a course slide deck, an onboarding presentation, a product briefing, an embedded preview is worth more than a link.

This widget does that for Google Slides specifically. It takes the URL stored in a text field, recognizes the Google Docs form of it, and rewrites it into the address that renders a preview, which it then frames on the form.

It also understands that a deck has pages. If the record carries a companion field with the page number, the preview opens at that slide rather than at the first one, which makes it usable for referencing a specific point in a deck.

What this means for your team

Embedding rather than linking is the difference between a resource people consult and one they mean to consult later. On training and course records especially, keeping the material on the same screen as the metadata about it is the whole point of managing it in Odoo at all.

The constraint to note is that only Google Docs links work. Any other host, including other Google products, produces no embed, and the field silently shows nothing. If your content lives elsewhere, this widget is not the route, and a link or a stored PDF is.

Supported options in Odoo 19

The widget declares no options of its own; it spreads the text field's descriptor. What it does read is a companion field found by naming convention, described in the note. Read from google_slide_viewer.js, Odoo 19.0.

OptionTypeWhat it does
the page companion fieldfield found by naming conventionThe widget reads a field whose name is its own field's name with a page suffix appended. There is no option to name it differently.(default: the first slide)
placeholder_fieldfieldInherited from the text field. Shows another field's value as a hint while this one is empty.

The page field is found by convention, not configuration. The widget looks for a field whose name is this field's name with a page suffix appended. There is no option to point it elsewhere, so the companion has to be named accordingly for the starting slide to work.

Working examples

The usual usage

<field name="slide_url"
       widget="google_slide_viewer"/>

A Google Docs link in the field renders as an embedded deck starting at the first slide.

With a starting page

<field name="slide_url_page" invisible="1"/>
<field name="slide_url" widget="google_slide_viewer"/>

The companion field's name is the main field's name plus a page suffix, which is how the widget finds it.

A link that will not embed

# no embed: not a Google Docs URL
https://example.com/deck.pdf

The regular expression matches Google Docs addresses only; anything else produces no embed and no error.

One regular expression, and two leftovers

The URL rewriting is a single regular expression. It matches an address beginning with the Google Docs host and captures both the path marker, which differs between a published link and a direct document link, and the document identifier. Those two pieces are recombined into a preview address with the slide number appended.

That means both common shapes of Google link work, and everything else fails closed: no match, no URL, nothing rendered.

Two leftovers are visible in the source and worth recording. The URL getter starts by reading a legacy value property that Odoo removed from field props several versions ago, so that first read always yields nothing before being overwritten by the real lookup. And the failure notification refers to a spreadsheet rather than a presentation, which is a clear sign the widget was adapted from a sibling and the message was not updated.

The page lookup is the other detail. It reads a field whose name it constructs by appending a page suffix to its own field name, falling back to the first slide when that field is absent or empty. Being a convention rather than an option, it is easy to miss when reusing the widget.

Version compatibility

VersionStatusNotes
Odoo 20.0In developmentNot released. Byte-identical to Odoo 19 on the development branch.
Odoo 19.0VerifiedVerified against the shipped source.
Odoo 18.0VerifiedSame conventions and the same regular expression.
Odoo 17.0VerifiedSame behavior with older component conventions.
Odoo 16.0Not availableWidget does not exist under this name.

Upgrade note. The widget and its conventions are unchanged in views from Odoo 17 through Odoo 19. The legacy property read described above dates from an earlier props model and has simply never been cleaned up; it is harmless but is the kind of thing to leave alone rather than copy.

What is changing in Odoo 20

Odoo 20 is expected at Odoo Experience in Brussels, 24 to 26 September 2026. The development branch is unstable and this may still change; we re-verify this page after the release.

Byte-identical. The file on the development branch matches Odoo 19 exactly, including the legacy read and the mismatched failure message.

Common problems and fixes

SymptomCause and fix
Nothing is embeddedThe stored URL is not a Google Docs address, so the regular expression does not match. Use a Google Docs link, or store the content as a PDF and use the PDF viewer.
The deck always starts at the first slideThere is no companion page field, or it is empty. Add a field named after this one with a page suffix; the name is a convention, not an option.
A notification mentions a spreadsheetThe failure message was inherited from a sibling widget and never updated. Nothing to fix; it means the embed could not be displayed.
A private deck shows nothingThe embed is fetched by the user's browser, so the document's sharing settings apply. Make the deck accessible to whoever needs to see it.
The link works but the preview does notOnly two Google path shapes are recognized by the expression. Use a standard document or published link rather than a shortened or redirected one.
Options are ignoredThe widget declares none; only the inherited text options apply. Use the text field's options as usual.

Slide viewer field vs the alternatives

WidgetBest forKey difference
google_slide_viewerShowing a hosted Google Slides deck on the record it belongs toRewrites a Google Docs URL into an embed and opens at a page named by convention
pdf_viewerA stored PDFRenders a file on the record rather than a hosted document
iframe_wrapperA complete HTML documentRenders stored markup rather than an external URL
urlA link users followNo embed, and it works for any host
image_urlA hosted imageOne image rather than a document

Where the content is a stored PDF rather than a hosted deck, the PDF viewer is the right widget. Where it is a complete HTML document, the iframe wrapper is. And where the link only needs to be reachable rather than shown, the plain link widget is lighter than any embed.

Frequently asked questions

Which links does it accept?+
Google Docs addresses only, in either the published or the direct document form. The regular expression captures the document identifier and rebuilds a preview URL; anything else produces no embed.
How do I make it open at a particular slide?+
Add a companion field whose name is this field's name with a page suffix. The widget finds it by convention, and there is no option to point it elsewhere.
Why does the error mention a spreadsheet?+
The message was carried over from the sibling widget this one was adapted from and never updated. It means the embed could not be displayed.
Does it work for private decks?+
Only for viewers who already have access. The embed is loaded by the user's browser, so Google's own sharing settings apply.
Does it support options?+
None of its own. It spreads the text field's descriptor, so the inherited text options work normally.

Training material where the training happens

Course content, attachments and completion tracking belong together, and the integration decisions matter more than the content platform. We implement Odoo eLearning and knowledge management on versions 16 through 19.

Book a free consultation

How this page was produced

The regular expression, the two accepted URL shapes, the page field convention, the legacy property read and the mismatched notification text were read from google_slide_viewer.js on the Odoo 19.0 branch, with the inherited option set read from the char field. Version coverage comes from comparing the file across the 16.0, 17.0 and 18.0 branches and a byte comparison against the public development branch. Spotted an error? Tell us and we will correct the page.