Skip to main content

Sort of at my wit’s end on this one and have tried so many scenarios to make this happen.  Sadly, only able to do it using Make but there has to be a way in Zapier. 

 

I have an internal team that posts two files each week to one of our Research channels.  The current process is that they have to download the two files, open them in Excel, manually copy and paste a ton of columns into Airtable and then do a bunch of cleanup.  I would like to create an automation whereby every time a new excel shows up in this channel, Zapier is able to parse the file and send the columns to airtable either directly or via ZTables.  

So far the only way to get this to work is convoluted:
1) Zapier sees new post and grabs spreadsheet.

2) Zapier sends the sheet to a Google Drive folder (which nicely auto-converts it to CSV)

3) Make is watching the folder and sees a new file.  It is able to grab the specific columns I want and send them to our Airtable Base (airtable automations then kick-in to clean).

4) Zapier then deletes the spreadsheet 1 hour later (it is no longer needed).

Now some of the problems are:
-I cannot tie any script to a google sheet ID because the ID will change every week so it has to be tied to the file name/event.

-I also cannot find any script that allows me to cut out the Make middleman and just have the data from the one-time unique sheet because I don’t need rows I need columns.  

-Supposedly ZTables can handle this but I cannot find any way to make ZTables even come close to being chat friendly with the GSheet - only the other way around (send to GSheet).

So any ideas or help would be greatly appreciated as this automation would save lots and lots of hours per week of manual, error-prone, work.

Hi ​and welcome to the Community, @Pouncysilverkitten😁

Extracting columns in the way that you’re after is going to be a bit tricky, as we don’t process the Google Sheets spreadsheet data by column, data is handled row by row. You can use a Zap to loop through each row in your spreadsheet and extract values only from specific columns though. So if the data you need consistently appears in the same columns (e.g., “Name” is always in column C), you can set up a Zap to process each row accordingly.

For example:

  • Trigger: New File (Slack) - triggers when a new file is posted.
  • Action: Upload File (Google Drive) - uploads the file to Drive.
  • Action: Utilities > Import CSV (Formatter) - gets the data in the CSV version of the file and outputs it as line items.
  • Action: Create Loop from Line Items (Looping by Zapier) - iterates through each line item (limited to 500).
    • Action (inside loop): Create Record (Zapier Tables or Airtable could work) - set to only the copy across data from certain line item fields (columns) into the relevant record fields. 
    • Action (inside loop): Only Continue If... (Filter by Zapier) - set to only run subsequent actions if the value is in the Loop Iteration Is Last field is (Boolean) True
    • Action (inside loop): Delay For (Delay by Zapier) - set to delay the last loop for one hour.
    • Action (inside loop): Delete File (Google Drive) - set to delete the file uploaded by the previous Google Drive step, referencing it by its ID. 

If the spreadsheet columns are consistent, this setup should work. But if the names stay the same but the positions vary, you could explore using a Zapier Agent to read the data more flexibly and extract the column values by header name. 🤔 If you’ve not worked with Agents in Zaps before I’d recommend checking out our Start an agent behavior from a Zap guide to get started.

Do you think either of those approaches could work? If I've misunderstood what you're looking to do, or you run into any issues in giving this a try, let us know — always happy to help further! 


​Hey ​@Pouncysilverkitten, just checking in! How are things progressing with this? Did either of my suggestions do the trick, or were you able to figure out a different solution?

Happy to assist further if you’re still stuck at all—just let me know! 🙂