The Brazilian-Cameroonian Discussion Group

Hi folks, I had a blast meeting each and every one of you last week. No, I mean that literally. There was not a single stale or boring interaction. It was the perfect dynamic between being completely exhausted at the end of the day and hyped about the next one. Ndolé is great, it’s like someone is hugging your heart. I was able to forgive 2022.

I won’t tell you how to live your lives, and I won’t pretend I understand everything about what Cameroonians go through on a daily basis, but I thought I’d compile a few pieces of collective feedback here for the folks I met at the Giraffe Hotel. I hope this is helpful.

  • AI is the future :trade_mark:, but humans are not going anywhere. Don’t be fooled. The fact that tokens are becoming the currency does not replace the need for human connection we all crave. No one likes working with unkind, inconsiderate, miserable people. This is exactly the opposite of my Cameroonian experience. The students at that conference were extra personable and laser sharp. This is precisely the right attitude to have in your professional life.

  • Just by being born in Cameroon, you possess a gift that people in big tech centers spend thousands of dollars every month to master: two languages. If your first language is English, go and find a project that needs help with documentation. Learn a bit of Sphinx, Mermaid, or simply find some grammar mistakes. If your first language is French, you have the opportunity to create translations and content in that language. This is not just about you “contributing to open source” (well, I guess it’s a bit of that) but the focus should really be for you to understand what it means to work in a team, to have your work reviewed by others, and to acquire that fundamental piece of professional experience that no graduate on Earth gets just by doing their school assignments.

  • When you are having a professional discussion, drop.the.Sir. Drop it. I know this is cultural and I fully appreciate it represents respect, but it comes accompanied by a position of inherited submission that has no place in a healthy workplace. It’s not the word itself, but several outstanding engineers whom I met last week suffered from bad body posture, a fear of asking questions, a feeling that their opinions did not matter, a rejection of friction as a healthy discussion dynamic, etc. I am not telling you to be jerks, but I am highlighting that the respect you show to your grandma shouldn’t be automatically translated into submission to your professional peers. Know that you have earned the right to be in a technical discussion by the simple fact you are in a technical discussion. I will make a t-shirt with that sentence for my next visit!

What now?

Create an account here and let’s talk. I will set up a call for later this week when I am going to run my session about Workspace AI again. This time I will record it. Please feel free to join it, but if you cannot, watch the recording and ask questions here. Times will change in the future.

2026-09-24T16:00:00Z→2026-09-24T17:30:00Z

2026-09-25T09:00:00Z→2026-09-25T10:30:00Z

Join with Google Meet

If you came here from the event last week, can I ask you to please “like” this post just so I have an idea of the audience?

There are a handful of folks who volunteered to help me answer questions. I will meet with those folks on a regular basis, and they will be available at least once a week to answer questions here.

Please follow the Ubuntu Code of Conduct. Other than that, challenge everything. Have an opinion. Be more excited than nervous. Call out BS. Tell me when I am wrong. Invent something new and write about it. I am eager to read it.

P.S.: Write in whatever language you want, we all have access to automated translators. In doubt assume good intention and ask for the original text.

Pedro

28 Likes

Pedro je suis tres ete ravi d’etre present lors de la pycon au cameroun. je suis francophone mais je comprend un peu l’angais . merci deja pour vos remarques et conseils. personnellement je partage votre avis car moi j’en suis un , de fois communiquer la plupart du temps est difficle. j’essaierai de fuire la timidite prochianement :sweat_smile:

2 Likes

It was great meeting you Pedro. Looking forward to the Sessions.

2 Likes

Pedro it was a pleasure meeting you looking forward to more amazing sessions. And i am hoping to this discussion help me become a better software Engineer

2 Likes

Hello Pedro

I have an Ubuntu Weekly Newsletter hat on to advise you that we will disseminate your post and the subsequent request for continued discussion.

Also to increase your exposure, you should also post your events in the Events Calendar:
https://discourse.ubuntu.com/upcoming-events/month/2026/9/1

Regards

4 Likes

Day one was a cool session!

Indeed! There’s so much that can be done with just a googlesheet.

1 Like

Hey everyone,

Following up on yesterday’s and today’s sessions, I decided to immediately put everything we learned from Pedro to the test. I sat down to turn a detailed health indicators dataset for Cameroon and regional Sub-Saharan Africa into a full interactive web app dashboard, complete with dynamic filters and spatial mapping.

I kept at it for quite a while, and honestly, initially, I hit a massive brick wall.

At first, I thought it was just my network acting up, so I went ahead and cycled through every internet service provider I have access to, tried hotspotting, and reloaded until I realized it wasn’t the connection at all. When I tried to authenticate and deploy the Apps Script Web App, Google stopped me cold with this screen:

“This app is blocked”

This app tried to access sensitive info in your Google Account. To keep your account safe, Google blocked this access.

Unlike the typical “Google hasn’t verified this app” warning where you can just click Advanced and proceed, this was a hard lock, no bypass button, no advanced link, just a flat refusal.

At that point, I had to summon the Tall Brazilian @pedroleaoc himself. After he blessed me with his wisdom (and helped me trace the root issue rather than blaming the ISP), we figured out exactly where things went wrong.

What Actually Caused the Block

The issue boiled down to implicit OAuth scope escalation:

  1. Unscoped Drive Permissions: When you use SpreadsheetApp inside Apps Script without explicit boundaries, Google’s compiler automatically infers permissions and requests read/write access across your entire Google Drive. For unverified web apps, Google’s security heuristics flag this broad scope as a high-risk security violation and block execution entirely.

  2. Standalone vs Container-Bound Isolation: Creating a standalone script (script.google.com) trying to access specific private sheets treats the script as an untrusted third party.

  3. Multi-Session Collisions: Running multiple Google profiles in the same browser session can scramble authorization redirects.

How We Fixed It

The solution didn’t require deleting the app—it required hard-constraining the app’s blast radius in two places:

  1. Enforcing Document Boundaries (@OnlyCurrentDoc):

    Added the JSDoc guard at the very top of Code.gs to force the runtime parser to limit permissions strictly to the active spreadsheet file:

    JavaScript

    /**
     * @OnlyCurrentDoc
     */
    
    
  2. Explicit, Minimal Scopes in appsscript.json:

    Opened the project manifest (Project Settings > Show appsscript.json) and overrode the default broad permissions with minimal scopes and deployment configurations:

    JSON

    {
      "timeZone": "Africa/Lagos",
      "dependencies": {},
      "exceptionLogging": "STACKDRIVER",
      "runtimeVersion": "V8",
      "webapp": {
        "executeAs": "USER_DEPLOYING",
        "access": "MYSELF"
      },
      "oauthScopes": [
        "https://www.googleapis.com/auth/spreadsheets.currentonly",
        "https://www.googleapis.com/auth/script.container.ui"
      ]
    }
    
    

    Specifying "[https://www.googleapis.com/auth/spreadsheets.currentonly](https://www.googleapis.com/auth/spreadsheets.currentonly)" signals to Google’s OAuth gateway that the script has zero access to personal files outside this single document, immediately clearing the sensitive scope lock.

  3. Deploying Under a Clean Version:

    Creating a new deployment version after locking down the manifest turned the blocked screen back into the standard developer consent prompt, allowing the web app to launch seamlessly.

If anyone else in the group is hacking on Google Workspace APIs or building web apps from spreadsheets and runs into the same red warning screen, don’t waste time troubleshooting your Wi-Fi like I did!

I wrote a breakdown with the complete script configurations and troubleshooting steps on my blog:

:backhand_index_pointing_right: Read the full write-up: https://chifen.is-a.dev/blog/resolving-google-apps-script-this-app-is-blocked-when-deploying-web-apps/

Curious if anyone else has run into this scope lock when experimenting with Workspace automations!

5 Likes

Hi @pedroleaoc could you please send the records of the previous sessions?
Thank you

2 Likes

This Wednesday!

1 Like

Apologies for the delay here, Google was still processing the files last Friday and I wasn’t able to edit them. I will get to it tomorrow, in time for our next session :wink:

Pedro

1 Like

Who’s ready for today’s session, 5mins to goo​:slightly_smiling_face::eyes:!!!

1 Like