A Few Questions about Publishing a Gmail Workspace Add-on as an Organization

218 views
Skip to first unread message

Avana Vana

unread,
Jan 11, 2023, 10:03:51 AM1/11/23
to Google Apps Script Community
Hello,

I have recently finished developing a new Gmail Add-on for Google Workspace Marketplace, which I hope to publish to the Marketplace in the name of my organization.  I have a few questions about this that I couldn't find the answers to in the docs or searching through threads here.

1. How do you publish an add-on as an organization, rather than an individual google developer account?  I have "Owner" access according to the project in the Google Developers Console, yet when I tried to see if I needed to migrate/move the project to my organization it said i was lacking the `resourcemanager.projects.move` permission.  My IAM shows that I do have that permission, which is very confusing.  What do I have to do such that when I publish the add-on to the Marketplace, it shows to all people visiting the listing as belonging to my Organization, rather than me, personally?  Is there some kind of way to set up and pay the fee for a developer account that belongs to the organization as a whole?

2. Will I be able to make future updates to my add-on's code after publishing to the marketplace, for example, for additional features or bug fixes?  Or is it only possible to update the listing details and not the code/app itself?  If you do need to add features or fix bugs does that mean you have to publish it as a new app entirely, going through review again, and you lose all your previous user reviews?

3. How do I publish a workspace app so that it appears as an "Internal Add-on" in Google Workspace Marketplace, so that other people on my team can perform testing and write out the support files and film How-To videos?  I get the impression that if I publish privately to my Google Workspace domain, I lose the ability to ever publish it publicly in the future.  This seems to be to be a poorly thought-out workflow, as it requires all work on the add-on be done by a single user in the organization prior to publishing.  If I can't publish it privately without losing my ability to publish publicly later, is my only option to start a new project on other user's accounts and literally copy and paste the code into those new projects?  Or should I publish it privately, and then after we're done testing/developing support content, copy and paste the code into a new project on my developer account and then publish that project?

Thanks for your time!

Andrew Roberts

unread,
Jan 12, 2023, 1:53:40 AM1/12/23
to google-apps-sc...@googlegroups.com
AFAIK:

1) The Add-on has to be associated with one Google account, not just the domain.

2) You can make updates by deploying a new version, and updating the version number in the Google console.

3) You can only make it private or public, and then you are stuck with that choice.

--
You received this message because you are subscribed to the Google Groups "Google Apps Script Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-apps-script-c...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-apps-script-community/0844763f-a007-44ca-b36a-9446b8e3b876n%40googlegroups.com.

Mani Doraisamy

unread,
Jan 12, 2023, 8:30:16 AM1/12/23
to google-apps-sc...@googlegroups.com
On the third point, I think you can unlist the addon, so that it is only available for people with the link, but still retain public access.

Avana Vana

unread,
Jan 12, 2023, 9:29:33 AM1/12/23
to Google Apps Script Community
Thanks for your responses.

Regarding #1:
Do you mean if the account I built the app under is part of a Google Workspace/domain, that it will automatically be associated with the domain?  I am trying to figure out essentially how to make sure the organization is listed as the publisher, and not me personally, as a developer.

And on #2:
Ok, this is good news.  I was unsure because after looking through existing Marketplace listings, I didn't see version numbers anywhere on the listings, but I did see "listing last updated on", and in Google's documentation, they describe how to make updates to listings but not how to make updates to published code.  Do you know if, after you deploy a new version with a new version number, a.) you must resubmit for review?  and b.) will existing users retain the ability to use the old app version until the new one is approved?

Thanks again!

Avana Vana

unread,
Jan 12, 2023, 9:30:11 AM1/12/23
to Google Apps Script Community
Hi, and thanks for your response.  Do you know if you can "re-list" after "un-listing"?

Mani Doraisamy

unread,
Jan 12, 2023, 6:37:37 PM1/12/23
to google-apps-sc...@googlegroups.com
Yes! Under "App Visibility", there is a checkbox called "Unlisted" (Unlisted application won't be shown in browse or search results. It can only be accessed by the direct URL.)

You can check that without changing public visibility.You just have to uncheck "Unlisted" and save it to make it discoverable from the marketplace.

Andrew Roberts

unread,
Jan 13, 2023, 6:52:34 AM1/13/23
to google-apps-sc...@googlegroups.com
2.b. I am not sure if Google re-review on every update, but one gotcha is that if the user created any triggers with the old version and the new version requires new scopes the Add-on triggers will silently fail. So you have to have code that checks the auth status and sends email prompting the user to re-auth the Add-on (you include a link for this). 

This is what I use:

/**
* checkIfAuthorizationRequired
* From
*
* @return {Boolean} whether auth required
*/
checkIfAuthorizationRequired: function() {
Log_.functionEntryPoint()

var authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL)
var authRequired = false

// Check if the actions of the trigger requires authorization that has not
// been granted yet; if so, warn the user via email. This check is required
// when using triggers with add-ons to maintain functional triggers.
if (authInfo.getAuthorizationStatus() === ScriptApp.AuthorizationStatus.REQUIRED) {
authRequired = true
// Re-authorization is required. In this case, the user needs to be alerted
// that they need to re-authorize; the normal trigger action is not
// conducted, since it requires authorization first. Send at most one
// "Authorization Required" email per day to avoid spamming users

var properties = PropertiesService.getUserProperties()
var lastAuthEmailDate = properties.getProperty(PROPERTY_LAST_AUTH_EMAIL_DATE)
var today = new Date().toDateString()
if (lastAuthEmailDate !== today) {
if (MailApp.getRemainingDailyQuota() > 0) {
var html = HtmlService.createTemplateFromFile('Authorization')
html.url = authInfo.getAuthorizationUrl()
html.addonTitle = SCRIPT_NAME
var subject = 'Authorization Required'
var message = html.evaluate()
var options = {
name: SCRIPT_NAME,
htmlBody: message.getContent()
}
var recipient = Session.getEffectiveUser().getEmail()
MailApp.sendEmail(recipient, subject, message.getContent(), options)
Log_.warning('Sent re-auth email to ' + recipient)
} else {
Log_.warning('Unable to send "auth needed" email as run out of quota')
}
// Try again in a days time
properties.setProperty(PROPERTY_LAST_AUTH_EMAIL_DATE, today)
}
}
return authRequired
}, // Utils_.checkIfAuthorizationRequired()

///////// Authorisation.html ///////

<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<p>The Google Sheets add-on <i><?= addonTitle ?></i> is set to run automatically.
However the add-on was recently updated and it needs you to re-authorize it to
run on your behalf.</p>

<p>The daily check of the <i><?= addonTitle ?></i> calendar for new tasks is
temporarily disabled until you re-authorize it. To do so, open Google Sheets
and run the "Add-ons > <?= addonTitle ?> > Check calendar for tasks" menu option.
Alternatively, you can click this link:</p>

<p><a href="<?= url ?>">Re-authorize the add-on.</a></p>

<p>This notification email will be sent to you at most once per day until the
add-on is re-authorized.</p>
<p>If you no longer use RTM and wish to uninstall it, which will stop these
"re-auth" emails, go into any <a href="https://docs.google.com/spreadsheets/">Google sheet</a>, click
Add-ons > Manage add-ons > The "Manage" button for Rose Task Manager and then Remove.</p>

<p>Please drop me a line if you have any questions.</p>

<p>Yours,</p>
Andrew Roberts
</body>
</html>


Avana Vana

unread,
Jan 13, 2023, 5:34:35 PM1/13/23
to Google Apps Script Community
Thanks so much!  Super generous of you.

Avana Vana

unread,
Jan 13, 2023, 5:35:13 PM1/13/23
to Google Apps Script Community
Great! Thanks again.

Kim Nilsson

unread,
May 13, 2023, 8:44:11 AM5/13/23
to Google Apps Script Community
The wording on Unpublish does seem to indicate that users can't use an unpublished app, or does access only mean they can't see it in Marketplace?

"users who have already installed your app can no longer access it"


Reply all
Reply to author
Forward
0 new messages