Target date: Saturday, July 25, 2026
Completed: Sunday, July 26, 2026
Finish the Google-account work that cannot be automated, submit the public Google Workspace Marketplace listing, and save proof of the submission.
The standalone repository and Apps Script release are already deployed. Use:
- Apps Script project:
https://script.google.com/d/1rlVWvciYu-wzqnY009I3oW-08ZPazYK1snrrMg9NNY7c5WBSkUK8W2Hb/edit - Script ID:
1rlVWvciYu-wzqnY009I3oW-08ZPazYK1snrrMg9NNY7c5WBSkUK8W2Hb - Immutable Apps Script version:
7 - GitHub release:
https://github.com/OilpriceAPI/google-sheets-addin/releases/tag/v1.2.0 - Full operator runbook:
DEPLOYMENT_GUIDE.md - Approved listing copy and scope justifications:
MARKETPLACE_LISTING.md
Do not deploy the older OilPriceAPI Sheets… Apps Script project. The project
linked above is the reviewed production target.
- Sign in with the publisher-controlled Google account.
- Open the Apps Script project above and select Project Settings.
- Replace the default Apps Script Cloud project with the organization-owned standard Google Cloud project's numeric project number.
- Confirm the Apps Script API and Google Workspace Marketplace SDK are enabled in that Cloud project.
- Add a backup organization-controlled collaborator to the Apps Script and Cloud projects.
- Configure the OAuth consent screen as External.
- Use app name
OilPriceAPI for Sheets. - Use an organization-controlled support and developer contact.
- Use:
https://www.oilpriceapi.com/privacy/google-sheets-addonandhttps://www.oilpriceapi.com/terms/google-sheets-addon. - Declare these three functional scopes:
https://www.googleapis.com/auth/spreadsheets.currentonly,https://www.googleapis.com/auth/script.external_request, andhttps://www.googleapis.com/auth/script.container.ui. - Accept Google's two mandatory identity defaults,
userinfo.emailanduserinfo.profile, in the submitted consent/listing configuration. The Apps Script manifest still declares only the three functional scopes above. - Add the publisher and clean smoke-test accounts as test users while OAuth remains in Testing status.
Do not add Drive-wide scopes or use the Google identity defaults for product behavior.
- Create a blank spreadsheet containing no customer data.
- In Apps Script, select Deploy → Test deployments → Editor add-on.
- Test Latest Code against the blank spreadsheet.
- Open the sidebar and confirm it initially reports no stored API key.
- Save a non-customer OilPriceAPI test key and test the connection.
- Run:
=OILPRICE_PRICE("WTI_USD")
=OILPRICE_UNIT("WTI_USD")
=OILPRICE_INFO("WTI_USD")
=OILPRICE_STATUS("WTI_USD")
=OILPRICE_CODES()
=OILPRICE_GET("/v1/prices/latest","by_code=WTI_USD")
- Confirm unsupported endpoints and query keys such as
api_key,token, andpasswordfail before a request. - Delete the stored key and confirm the sidebar returns to no-key state.
- Review Apps Script Executions for exceptions, retries, unexpected 4xx/5xx responses, or any credential/query-string leakage.
- Capture at least one real 1280×800 PNG showing the installed add-on, sidebar, and actual formula results.
- Include unit, source timestamp, or freshness context in a screenshot.
- Confirm no key, customer data, account identifier, or clipboard content is visible.
- Save reviewed screenshots under
assets/marketplace/screenshots/:sheets-addon-sidebar-prices-1280x800.png.
- In Google Workspace Marketplace SDK, add an Editor add-on integration for Google Sheets.
- Enter the Script ID above and immutable version
7. - Enter the three functional OAuth scopes plus Google's two mandatory identity defaults.
- Choose Public visibility before saving. Google treats this choice as permanent; do not use Private as temporary staging.
- Upload:
assets/marketplace/app-icon-32.png,assets/marketplace/app-icon-128.png,assets/marketplace/card-banner-220x140.png, and the approved screenshot. - Paste the approved copy and links from
MARKETPLACE_LISTING.md. - Submit the Marketplace listing for review.
- Complete Google's OAuth verification if requested during review.
- The Marketplace console shows a submitted/review state.
- The locked-review confirmation is recorded below.
- The exact submitted Script ID and version are recorded as:
1rlVWvciYu-wzqnY009I3oW-08ZPazYK1snrrMg9NNY7c5WBSkUK8W2Hb, version7. - No public page claims Marketplace availability before Google approves the listing.
- After approval, a separate clean account installs the public listing and repeats the customer-critical smoke test before marketing copy changes.
Submitted on July 26, 2026:
- listing:
OilPriceAPI for Sheets; - state: In review;
- console proof: “The draft is in review and can't be edited”, with the review-cancellation control present and draft saving disabled;
- Google Cloud project:
oilpriceapi-sheets-addon(991152473434); - Apps Script version:
7; - integration: Google Sheets Editor add-on;
- installation: individual and administrator install;
- regions: all regions.
Review caveats:
- the OAuth consent screen was still in Testing when submitted; Google may require it to move to In production;
- two submitted identity scopes are marked unverified, so Google may route the listing through OAuth verification;
- neither caveat blocked submission, and the review must not be canceled merely to change repository copy.
Versions 2, 3, and 4 do not include the required
script.container.ui scope. Versions 5 and 6 still read formula
credentials from the spreadsheet owner's user properties instead of the
spreadsheet-scoped credential. Do not submit or restore versions 2 through
6.