Issue with special characters in file names generated by AppSheet (Create File task)

Hi everyone,

We are currently working with an AppSheet Bot using the “Create File” task to generate documents (PDF, XLSX, etc.) in the app owner’s Google Drive. The process itself works correctly, but we’ve encountered unexpected behavior regarding special characters in file names.

:magnifying_glass_tilted_left: Scenario

The file name is dynamically generated from a text column where users can freely input values. For example:

  • “Informe del 10/08/2026”

  • “Registro: 01/01/2025 | Usuario A”

Since it’s a free text field, users may include special characters such as:

  • / (slash)

  • : (colon)

  • | (vertical bar)

  • ; (semicolon)

  • - (hyphen)

  • etc.

:warning: Observed behavior

When AppSheet creates the file in Google Drive:

  • Some characters are automatically replaced:

    • : → replaced with -

    • | → replaced with - (even though it appears correctly in email attachments)

  • Some characters are preserved:

    • ; remains unchanged
  • Some characters cause unexpected folder structures:

    • / creates nested folders instead of staying in the file name
      Example:
      “10/10/26” → creates folder 10 → inside another 10 → then file 26

:thinking: Questions

  • Is there any official documentation explaining how AppSheet (or Google Drive) handles special characters in file names?

  • Is there a known list of allowed/disallowed characters or transformation rules?

  • Has anyone found a scalable way to sanitize file names without manually replacing each possible character?

:hammer_and_wrench: Current workaround

We are currently using SUBSTITUTE() to replace specific characters manually, but this is not scalable since users can input a wide range of special characters.

:bullseye: Goal

We’d like to:

  • Understand how AppSheet processes file names internally

  • Define a robust validation or sanitization strategy

  • Avoid unexpected behavior like folder creation or character replacement

Any insights, documentation references, or best practices would be greatly appreciated!

Thanks in advance :raising_hands:

Unfortunately, there isn’t any better way.

My advice would be to avoid the freeform naming of the files altogether. Design a naming format and provide a way for users to choose the name parts. Then assemble the full name from those choices. It provides name consistency and allows for easier searching.

I assume these files are being used OUTSIDE of AppSheet?

I understood we approach it as the usual folder and file naming rules on any system, if you can’t name it like that in a folder or file in explorer, don’t do it in bot, so I always use substitute on folder and file names on the bots to ensure it does as expected. Then users don’t have to worry about it on their end.

The only documented part is “/”, agreed it’s not easy to track down though. And secondly it is about file name, not folder which then defeates citizen developers knowing what a “/” will do in a folder structure.

LOWER(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE(
SUBSTITUTE([your_column], " “, “_”),
“/”,”“),
“\”,”“),
“:”,”“),
“*”,”“),
“?”,”“),
“””“,”“),
“<”,”“),
“>”,”“),
“|”,”“),
“#”,”")
)

@sricse I do want to however agree that the team ccan automate the conversion on their end of invalid characters and tell us that it always removed and sanitized before it allows the bot to continue…

@Jose_Arteaga Ask team if they can do these checks on the file and folder fields in bots for us and just omit invalid characters maybe..

The above method feels really a workaround that is a bit much for citizen developers…

I’m not sure what the problem is here. As noted by @sricse, invalid characters are replaced automatically. A slash (/) is not invalid, it’s a directory separator, so it isn’t replaced and has its natural effect.

Letting users provide content that is used without review is bad practice specifically because it can cause a raft of problems, not the least of which are security-related. AppSheet is already taking steps to protect you, but is also giving you the opportunity to introduce your own directory structure.

The best-practice approach here is to advise users that the desired filename must only contain allowed characters, or may not contain disallowed characters, then use Valid if to enforce it and/or allow AppSheet to make the substitutions.