Hi everyone ![]()
I’m trying to build a simple workflow, but I’m running into an issue with how Gumloop handles file inputs.
What I want to do
I want to create a custom node that:
-
Takes an Excel file directly uploaded by the user in the Gumloop interface (drag-and-drop file input at runtime)
-
Reads a specific cell range inside that Excel file
-
Returns the extracted data as JSON
So the node should accept three inputs:
-
excel_file→ the actual file object uploaded at runtime -
sheet_name -
cell_range
The issue
When Gumloop auto-generates the node, the “Excel File” input is always forced into a dropdown:
Excel File: Select an option
This dropdown only shows files that were previously uploaded in the builder, not files uploaded by the end-user when the workflow runs.
But what I need is not to select a file from a list.
I want the node to accept the runtime-uploaded file directly.
My question
How can I define a node that:
-
Accepts a file uploaded at runtime (the real file object coming from the user),
-
Instead of forcing me to select a file from a predefined list inside the builder?
I need the input to behave like a normal:
File (uploaded by the user)
—not like a parameter requiring pre-selection from a dropdown.
Additional context
I also tried writing a Python node manually using:
def function(excel_file, sheet_name, cell_range):
But when I call:
file_bytes = excel_file.read()
I get:
AttributeError: 'str' object has no attribute 'read'
Which confirms that the file is not passed as a file object but as a string path / ID.
Workflow examples
Here are two links showing the workflow where the problem appears:
Any help or clarification on how to properly receive a runtime-uploaded file inside a custom node would be greatly appreciated.
Thanks a lot!


