How to connect Dynamo to a web-based system

Thank u so much dear Dimitar for your great explanations and time. I will check the links you sent to me and start learning Revit API. Could u please introduce me a good and effective Revit API learning package, even if it is not free to help me start learning Revit API? Thank u so much again and so sorry for the late reply, since I was travelling for 8 days and did not have access to the internet.

Regards

Hi Jostein. Thank u so much for your response and sorry for my late reply since I was travelling for 8 days and didn’t have access to the internet. I am gonna work with Flux beside learning Revit API. Could u pls introduce me a good Revit API tutorial package? Thanks again

Regards

On a somewhat similar question. Is it possible to have dynamo report and access say a Google Spreadsheet?

I would say ‘likely’. Beyond the standard web request stuff, sheets and google drive have an API which can be accessed with Python, with or without authentication requirements. Only question is if it would execute correctly inside the Dynamo environment or not. Certainly worth looking into if you have a need.

I’ll also say that I think the web request node is gennerally underutilized.

Mike,
Respect Google Spreadsheet exist a node call Raindrops, you can map info using “element unique id”, i testing transponse 200k element information.

Hey @mike.quella, you can use the package I made called DynaWeb (available on the package manager) to interact with Google Sheets.
I ran a lab at #BILTeur just 2 days ago on this, see the attached sample Dynamo graph which sends stuff to Google Sheets. Remove the parts with append from the url (look at their docs) and the method to GET and it’ll happily retrieve stuff too.

I’d suggest looking into Airtable as an alternative though, the Google Sheets API is not nice to work with & docs are very obtuse.S31_Exercise_8_POST to Google Sheets_DynamoBIM forum.dyn (46.9 KB)

4 Likes

Hi @Radu_Gidei,

Thank you for posting and making DynaWeb! I’m using it to pull data from airtable - and have a few questions.

  1. I keep getting fields arranged differently when I connect. EG:
    {“records”:[{“id”:“rec5khMm0G6b23Oj6”,“fields”:{“ITEM1”:20,“Name”:“jimmy john",“DesiredHeight”:3,“Email”:"jerryJon@random.com”,“ITEM2”:5,“ITEM3”:10},“createdTime”:“2018-08-07T03:57:41.000Z”}
    and typically ITEM1 is grouped w ITEM2 & 3 (which is what I want) EG:
    “Name”:“jimmy john",“DesiredHeight”:3,“Email”:"jerryJon@random.com”,“ITEM1”:20,“ITEM2”:5,“ITEM3”:10}
    Do you know why this would happen?

  2. DynaWeb also doesn’t seem to update in real time. If there is a new entry in airtable - I have to restart dynamo for airtable to pull the update. Has this been your experience?

Thanks for any help!
-Mike

1 Like

Hi @MikeD,

Very cool to hear you’re using DynaWeb with the Airtable API.
It would be really useful if you could post/send me the DYN graph to help with debugging. If you’d be happy to contribute, we could also add it to DynaWeb samples folder for others to easily find and enjoy.

If you do plan to share, don’t forget to delete any API key strings or secrets in there).

To answer your questions :

1. Fields order

Though i haven’t used it before, a quick google or two lead me to believe Airtable API returns fields in a sorted order, with the ability for you to specify the field that is used for sorting.

Others with same issue : https://community.airtable.com/t/api-returning-fields-in-differrent-order/2299
Ordering records (& fields via in-page link) : https://support.airtable.com/hc/en-us/articles/223247187-How-do-I-sort-filter-or-retrieve-ordered-records-in-the-API-

I’d recommend using the JSON-to-dictionary node in the DynaWeb utilities in the meantime, since it will allow you to ignore the order of fields and retrieve the ones you’re interested in. YMMV though.

2. DynaWeb updates in realtime

This has to do with Dynamo caching the results (outputs) of nodes when executing. So if you run your graph and get stuff from Airtable, Dynamo won’t run that web request node again since it considers it executed (and hence no need to run again.)

This is something i’m aware of but i’ve not yet put any time towards making a built-in workaround in DynaWeb (requires messing with NodeModels).

To get around it today, you have a few options :

  1. Unplug and re-plug your request/web client node from the node that executes the web request. You shouldn’t need to restart all of Dynamo, but let me know if this doesn’t work.

  2. Use the ProRuBIM package’s force children eval node : this forces all nodes after it to always execute, bypassing Dynamo caching.

I suggest option 2 :slight_smile:

Let me know how you get on.

2 Likes

Hi @Radu_Gidei,

Thanks for the help! It worked! Initially I stopped using DynaWeb bc of the inability to repeat the call. I was using - https://digitalborn.org/data-analysts-get-data-from-the-airtable-api/
The issue with that work around is excel can only update every minute - and I am trying to update in real time / as close as possible. I resumed trying to use DynaWeb this week with your fix and finally got it to work running “periodic”.
A side note for those using airtable with your call - this is extremely helpful -
https://codepen.io/airtable/full/rLKkYB

The force children eval node has also been helpful in the larger program.

Thanks again,
Mike

2 Likes

Glad you got it working and thanks for updating the post with useful info for everyone else attempting the same workflow!

2 Likes

Hi @Radu_Gidei,

Another issue whenever you have time - I am now trying to post to Airtable. I am trying to use your examples here - https://github.com/radumg/DynaWeb/tree/master/samples- and I keep getting an error - “error opening corrupted file”. I’ve had this warning on my home comp, work comp, and using Dynamo 1.3 & 2.0

Also in my current post to airtable - I am getting an error on the post -
“{“error”:{“type”:“INVALID_REQUEST_BODY”,“message”:“Could not parse request body”}}” - I’m not sure if my Airtable API URL call is correct. I can try and figure this out on my own if I can see some more examples.

Thanks again for Dynaweb & the guidance!
-M

Hi Mike, can you please post a Dynamo file that we can debug ? Can’t do much more without one as not sure where the issue is.

Please make sure you don’t leave your api key or secret in the file before posting it.

Hi Radu,

I was first trying to see the examples you originally referenced - https://github.com/radumg/DynaWeb/tree/master/samples . I keep getting errors when opening the files posted to your github. Could you let me know if others have had that issue?

& I am attaching the excerpt of my code. I would eventually like to post an image to airtable, but am first trying to post text.

Thanks,
Mike
DynaWeb eg.dyn (19.0 KB)

I’m still struggling with trying to upload an image or add to the “record”. @Radu_Gidei - Do you know if it is possible to upload an image with the DynaWeb script?
I’m including the png of my script and the dynamo file.
Thank you again. Your program has been a great help.
Dynaweb eg.dyn (19.6 KB)

Hi Mike, haven’t had time to look into the specifics of the AirTable API yet but here’s 2 bits of semi-good news :

  • I can confirm DynaWeb is capable of uploading files, it even comes with a sample that uploads a file to Forge
  • I’ve started using Airtable and enjoying it so will likely want to integrate with it as well.

Any Updates?! mine is showing error invalid request missing. one more question :can i push Schedules with format through this system to Airtable

Hi @Saurabh.jha88,
I was able retrieve data from airtable, but never able to post data to airtable.
The program I am trying to create would have a user enter data from a remote location, and I would like to be able to return the result. Ideally I would like to return a jpg to .

If I figure this out, I will post. @Radu_Gidei helped me figure out how to pull the data which was extremely helpful.

Best
Mike

Mike
Thanks for the update I am also trying to to the same but i am struck at first step i.e. Retrieve the data from airtable ca you share the screen shot so that i can try this and go on next step. thanks for the reply

@Saurabh.jha88 - the screenshot is posted in the thread above. Let me know what you need help with. I’ll DM you too bc I dont check this often enough

Hello, I am trying to use this method to connect to an online excel spreadsheet but I am having trouble with the permissions I think. Where exactly to I find out what my authorization token is according to the downloadable file on this string. In the section shown below. Thanks!