Dear Radosław,
There are some ways doing that.
One way is to create a Power Automate flow and share the flow with the users to create the list automatically.
You can create a flow for users to define the site URL and the list name to create the list and then add the columns to it automatically.
The flow can be like the following.
Create list
Method: POST
Uri: _api/web/lists
Headers:
{
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose"
}
Body:
{
\_\_metadata:
{
type: "SP.List"
},
Title: "@{triggerBody()['text\_1']}",
Description: "@{triggerBody()['text\_1']}",
BaseTemplate: 100
}
Create the column array to add multiple columns to the list. In my example, I add the Text, Date, Number and Currency type columns.
[
"{'__metadata':{'type':'SP.FieldText'},'FieldTypeKind':2,'Title':'ExpenseTitle'}",
"{'__metadata':{'type':'SP.FieldDateTime'},'FieldTypeKind':4,'Title':'Phase1Date'}",
"{'__metadata':{'type':'SP.FieldNumber'},'FieldTypeKind':9,'Title':'CostCenter'}",
"{'__metadata':{'type':'SP.FieldCurrency'},'FieldTypeKind':10,'Title':'Expenses'}"
]
Add the columns to the list
Method: POST
Uri: _api/web/lists/getByTitle('@{triggerBody()['text_1']}')/fields
Headers:
{
"Accept": "application/json;odata=verbose",
"Content-Type": "application/json;odata=verbose"
}
Body:
items('Apply_to_each')
Another way may be to use Site Script with Power Automate or PowerShell.
You can refer to the information in my posts below for the detailed steps.
Save a SharePoint Site Template - Microsoft Community
How to Create a Backup of SharePoint Site. - Microsoft Community
What are the best options to move a document library to a new - Microsoft Community
Welcome to share your updates at your convenience.
Thank you for your effort and time.
Sincerely
Cliff | Microsoft Community Moderator