Unique form to update rows

Hi everyone,

is it possible to have unique web forms that do not add rows to the table but can update existing rows?

For example, if I want to have quotes signed that I pre-fill, I would like to send a unique form for them to sign so that it updates the existing row.

Thanks :slight_smile:

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…

  1. I add an URL column in my table (let’s call this table QuotesTable)

  2. 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.

  3. 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

  4. 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 :joy:
  5. 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.

Bests,
Benjamin

1 Like

Another easy solution is to use universal apps. If you want your partners to update existing rows, you can

  1. Let your partners join your app
  2. Assign existing rows to your partners
  3. Create a table page in app that filter rows by assignees and can only update certain columns (using column permission settings in table page).

Now your partners can only see the rows assigned to them and modify only certain columns.

Hi Daniel

Thanks for your response.

Does this imply that the partner needs to have an account on SeaTable?

Yes. Partners need accounts, they can create free accounts in their own teams.

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.

Thanks again :slight_smile:

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.