Hi everyone.
Thanks for joining today.
I'm Steven Bazyl, one of the developer advocates here on
Google Drive, and today I'm going to take a look at a
fairly new drive app that we found in the Chrome Web Store
called Ultradox.
This is an app from Florisoft.
If you're familiar with them they've actually been doing a
lot of apps for Google Apps users over the past few years.
I've worked with them in the past.
There's some really great tools in the Google Apps
Marketplace for domain administrators and things
around Shared Contacts.
And I was really happy to find that they did this new
application called Ultradox, which adds some much needed
features for Google Apps users--
people who use Google Drive and want to get things like
mail merge and templating and batch processing for doc
generation, using Google Docs and Google Drive.
I want to take a quick look at their Chrome Web Store entry.
For those who had been looking for a solution for doing
templating and mail merge in Google Docs you can take a
look at this.
You can find them in the Google Drive collection.
Actually it's a pretty cool app.
If you want to go and look at the video, and they have a
really great tutorial showing off all the features.
And if you go take a look at their application, they have a
whole bunch of really cool templates to
help you get started.
Everything from interview letter feedbacks to badges,
some really interesting things with dynamic maps, being able
to create dynamic documents based off of, say for example,
contacts, address, or information that you have in a
spreadsheet.
Lots of cool stuff.
And to be honest, I haven't actually gone through and
tried all of these yet.
There's a lot of power here that is a bit
of a learning curve.
But I want to show off the basic features, and talk a
little bit about some of the integration things they did.
From a technical perspective, some good, some interesting
but not supported.
So let's just actually jump into that.
I created here earlier a new Ultradoc.
You can actually go and create these from Google Drive under
the Create menu.
So you can go here and say, create new Ultradoc.
And this will just give us a blank project to work with.
And here it's just untitled.
We can rename this.
We'll just make this one another "GDL demo."
And of course the next thing we need to do is actually have
a template for our document.
We can use Google [? OS ?], so we can actually select an
existing template or create a new one.
And then we can merge that template with data either from
Google Contacts, from a spreadsheet--
we can actually even do both.
We can select multiple contacts, multiple
spreadsheets, and pull data from different ones in order
to generate that document.
I'm going to start with a really simple
example using Contacts.
And first I'm just going to bring up myself as a contact.
You can see here all the different variables that it
found in Contacts.
These are things that we can then use in that template.
It's really great to see that they're using the contacts
integration in addition to drive.
And let's go create a new template.
So one of the cool things they're doing here which is
both cool and slightly unnerving is iFraming the
Google Docs editor.
This is not something that is officially
supported, but it does work.
And in this case I really like what they did in terms of
using the iFraming to display additional help in Contacts
for how to actually write templates.
One of the things that would be very difficult for users if
they just had our editor without the additional help,
then I would be lost as a user trying to write a template.
But here now I have this really handy reference.
I can look through all the different template variables.
In this case because all I have is just a contact, those
are the only ones that are available to me in addition to
some generic ones are always available.
So let's just write, dear to dot name dot, full name.
So a really simple example, and we can even just preview
this really quickly by clicking Generate Documents.
And here we can see, "Dear Steven Bazyl, hello." Not too
exciting, but a really useful thing just to demonstrate the
simplicity and the power of this.
So I want to actually go back to this project and bring in a
spreadsheet.
Let's just create a new spreadsheet, and let's just
say this is task, dismiss that, and we'll say, clean
house in three hours.
Amount, I'll say $50.
So a really simple spreadsheet here.
If I go back over to the Ultradoc, actually as I edited
it, it's actually been polling for changes to the document
and detected that I added a few things.
And you can actually see here one of the challenges with
polling for changes to documents is it actually
didn't pick up all of the columns that I've added.
So here I have task hours and amounts.
Because I waited a few seconds before adding that third
column, it hasn't yet detected it, but on its next polling
interview it should show up and it should show this as a
new variable that's available.
You can go over to our template, and we should also
start to see these appear here in our list of variables that
are available.
So again, one of these things you can do, I can say we'll do
sheet one, task, and I'm not entirely sure
if this will work.
So one of the things with Ultradox is they actually do
have different styles of doing templating depending on the
source of the data.
So for things like contacts, it's actually really easy to
reference the data.
So basically you have a single object, you could just pull up
the fields that you need for that.
For Sheets it does treat the sheet as a single object
itself, and it does aggregate the rows together.
So in order to do things like rows--
well either do formulas, you have to actually do the proper
template variables for doing that.
The good thing is they actually
have really good help--
let's actually go over to that--
on here for how to do all this with their product.
So we can look at templates.
They talk about how to do conditionals, how to do loops,
how to format.
We can do aggregates.
All sorts of really cool things.
And so when you actually start getting into some of their
advanced features, you can start to see how you can use
this to do things like, for example, you're a contractor,
you're doing a job for a customer, and you're keeping
track of all the different work items for a particular
jobs in a spreadsheet.
You can now have a nice little template of a cover letter
that you sent out to your customers when you invoice
them, and have it nicely formatted in a doc.
And if you want to do really advanced formatting, they also
support LibreOffice files, in addition to Google Docs.
So if the formatting controls in Google Docs isn't quite
enough for your needs, you can go use LibreOffice.
And you can even use LibreOffice online with some
of the applications that we have in the Chrome Web Store,
such as InstallFree Nexus.
In which case you start to see that power of having this
ecosystem of applications where I can start to do
everything I need to do in the browser, in Chrome, on any
device, whether or not it's using Google Docs as an editor
or LibreOffice inside a browser as well.
Really, really cool stuff when you start to combine all these
apps together.
A couple other things I wanted to show in here is they
actually do have some other things you can do in terms of
how these documents are generated.
So obviously you can save them back to Google Drive in
different formats.
You can do a PDF, or you can have that converted back into
a Google Doc format if you just wanted to share it out to
somebody, specify the folder and so on.
Of course you can email these out to people,
send multiple copies.
But another really cool thing is Google Cloud Print.
I don't have any printers configured for this particular
account, but this is something that they support.
When you do the OAuth grant for that application, it will
ask for permission to access your printers.
Right now all I have is the kind of the default saved to
Google Drive one.
But if I had my printer at home or one of the printers in
the office configured, I can have it just printed out
directly from the application.
And this is really useful when you actually start doing
batches of documents.
If you want to do a mail merge type functionality and select
a bunch of contacts, you can do that and have them just
print out automatically all from this web app without
having to deal with your native printer dialog, or
without even being anywhere physically
close to having a printer.
So it's a pretty cool app.
And I actually just noticed, here earlier I was mentioning
about the latency with polling for the changes, we can
actually see here now that it did discover the additional
templates in there.
You can actually even see this too if I just start putting in
a random template variable.
We'll just say [? "foo," ?]
We'll go back and it should, in probably a minute or so,
this field here where it says "ready to go" is actually
going to update and warn me that I have a variable in the
document that isn't really bound to a value yet.
It's not something coming from a contact, it's not coming
from the spreadsheet, so it is something that I
need to fill out.
And it's really good for those one-off things that you just
need to do that final little bit of customization for, that
you're not going to be pulling from one of
these other data sources.
So overall, I'm really just scratching the surface with
this application, and I do actually plan on playing
around with it a lot more.
I think it's a very cool application and something that
a lot of Google Docs users have been asking for, for this
type of functionality.
And I think they did a pretty good job at making a pretty
good user experience.
There's a lot of complexity and there is a learning curve
because it is in a new templating system.
There's a lot of power you can do with spreadsheets and
looping and dealing with multiple contacts doing batch
processing.
So it does take a little bit of time to really get familiar
with everything that you can do in there.
But once you get into the advanced stuff with having
customizable maps and dynamic image generation, really
awesome features.
And a very welcome addition to the apps ecosystem
that we have here.
I know they've also made this application available in the
Google Apps Marketplace for domain administrators to
install for all their users as well.
And I know that there are certainly some technical
challenges that they had to encounter there in dealing
with multiple marketplaces, different ways of doing
authentication and authorization, depending on
whether or not this is a domain-wide install versus an
individual consumer coming along.
Something that we may explore in future GDL sessions, but
they did a pretty good job there.
The biggest criticisms I have, and I really can't fault them
too much for these, is the polling latency is noticeable.
Particularly as a new user for the application where I want
to do a lot of experimentation, and going
back and creating and updating a spreadsheet in the template
and switching back and forth in order to explore those
features, having that latency of 30 seconds to a minute for
it to detect changes to the template was a little bit
bothersome.
And that unfortunately is not something they can easily work
around with at this time.
If they were to increase the polling frequency, they would
start to run into quota limitations.
So it's just a balancing act right now.
Hopefully we'll have a better solution in the future for
this type of functionality.
And then the other issue is the iFraming of the editor.
Again, this is not something that we particularly encourage
or support, but in this case they did so for good reason,
to overlay the help dialogue or this little help pane.
Again, this is hopefully something we'll improve in the
future and give developers more options for integrating
with their editors.
But in the meantime it's a pretty good use of an
unsupported feature.
But I would not recommend anyone do that unless it was
absolutely necessary to do so.
Other than that, a really good use of combining multiple
Google services with contacts, spreadsheets,
Google Cloud Print.
And I do know this does run on App Engine.
You can actually notice the first time that you use the
application, you will get some App Engine specific artifacts
around authentication.
And it's one of those things where it's a trade-off for
developers.
App Engine does have some really nice features in terms
of integration with Google accounts.
The downside to using those features is you do pay a
little bit of a penalty on the user experience, because of
the separation between the App Engine login screen and the
OAuth grant.
If you end up with a two-step approval, which we're not
going to actually show here, but the first time that you
use this application you do actually have to do two steps
to authorize the application fully.
That could have been avoided by doing a pure OAuth two
based system for both authenticating and authorizing
user and do it in one step.
But they would have had to write a little bit more code
in order to manage the users themselves rather than using
App Engine's built-in user service.
Yeah, I'm actually really excited to play with this
application.
I actually have a lot of things in mind just personally
for how this could be useful.
My family, we send out lots of stuff around the holidays, and
I could see doing--
as our news around the holidays grows, and I want to
start doing form letters, I probably
will be using Ultradox.
Other than that, really good job to the guys at Florisoft.
And I think that's it for today.
So try Ultradox if you are looking for templating in
Google Docs, or mail merge functionality.
It's a really cool product.
Come back next week, and I don't know if we have a topic
set, but we do have a few things in the pipeline.
So hopefully some new features that we can announce next
week, and if so, I think they will make for
very interesting sessions.
Thanks, and see you all next time.
[MUSIC PLAYING]