Hi @yblis ,
I’m not sure if this can help you as this workflow requires at least an extra automation tool (I use n8n), but I had recently almost the same problem, and here is the way I found to create a form to update a row instead of creating a new one…
I add an URL column in my table (let’s call this table QuotesTable)
I duplicate QuotesTable into another table (let’s call this one UpdateCalls), and I add to UpdateCalls a new column (text-type) (called for example Id) that will contain any specific info of the row of QuotesTable you want to update. The easiest is to store directly the _id of the row, but you can store the content of any specific column as long as you’re sure it’s unique in QuotesTable.
I create a standard SeaTable form to feed my new UpdateCalls table, I add as first item to fill my Id field, and I generate a custom share link to make it easier to remember, for example update-call on myseatableserver.com will give you for example https://myseatableserver.com/dtable/forms/custom/update-call
For each new row (when you create the quote) of QuotesTable, I need to generate the corresponding update-call custom URL. For that, I kind of ‘hack’ the great pre-filled form fields feature to manually pre-fill the fields of my update-call.
It works with the following syntax:
if a field is pre-filled but can be modified, you use &prefill_ then your column’s name then = then the pre-filled value
if the field is pre-filled but shouldn’t be modified, you use the same syntax, but beginning with &prefillForce_
As an example will probably be easier to understand, consider a Quote (a row of QuotesTable) with Quote._id = quoteid and containing the following modifiable data : col1 > data1, col2 > data2 and the following non modifiable data : col3 > data3, col4 > data4. The URL will be https://myseatableserver.com/dtable/forms/custom/update-call?prefillForce_Id=quoteid&prefill_col1=data1&prefill_col2=data2&prefillForce_col3=data3&prefillForce_col4=data4
Few considerations:
the first pre-filled field comes with a ? instead of the & I mentioned
don’t forget to adapt your data to URL (using encodeURI() in JavaScript for example) so that accented or special characters can be understood
Seeing that, you probably understand why it’s easier to create an automation workflow to generate this link for you
Finally, I create another automation workflow running for each new form submission, that will:
find the row in QuotesTable with the id present in the form (quoteid in our above example)
update this row will all the data mapped from the form (the columns have the same names between QuotesTable and UpdateCalls so the mapping is easy)
delete the UpdateCalls row corresponding to the form submission if the update of the QuotesTable row returns success
It’s definitely a bit complex, but it uses only Seatable standard forms (and still an automation service).
There are other easier solutions, but they need more codding and hosting capabilities (for example creating your own HTML form, triggering an automation workflow via a webhook while loading the page, webhook that will send as response the content of the fields of your form that you’ll then be able to pre-fill, and triggering again an automation workflow while submitting the form to update your row without the need of an extra table). I also worked on such a solution, if you’re interested, let me know, I can share some more information.
Hi, and thanks for this incredibly detailed response. Unfortunately, I couldn’t completely follow it, maybe due to my understanding of English.
I will try again later.