Cheating with ProcFu

Scott Costello Blog, Podio, Tools, Tutorial 2 Comments

If you have read any of my previous articles you know that I love me some Podio API.  However it is not something that your average Podio user can take advantage of.   Not even your advanced Podio users for that matter. The reason being is that it can only be leveraged by using other programming languages such as PHP and Ruby-on-Rails.  

That is what I thought until I stumbled across a tool, created by the same person who developed GlobiFlow, called ProcFu

What is ProcFu?

Yes, it definitely sounds like a type of Kong-Fu.  But what it actually is is a set of scripts that allow you to use the Podio API directly without writing any code.  Though you can run these scripts using code as well.

Here is what it would take to use the Podio API by yourself, you would need to handle a few things in code...

  1. Authorization - telling Podio who you are and getting approved by Podio to access the API.  This must be done in code before running a Podio Api Procedure.  This was not a fun process to learn!
  2. Execute the Podio API procedure by calling it and supplying the correct parameters.
  3. Catching the returned information.
  4. Reading the returned information
  5. Deciding what to do next.

It's a bit more complicated then that, but in the simplest terms that is how a developer would deal with the Podio API.

What ProcFu does is that it handles the Authorization (1), execution (2), catching (3) and reading (4 - depending on the ProcFu script).  All that is left up to you is the deciding what to do next with the information.

What can ProcFu Do?

For the most part ProcFu mimics what the Podio API Offers.  Many of the scripts are direct representations of a corresponding Podio API process.  There are also some that access the Google APIs that are very useful. 

Here is the list (taken directly from the ProcFu website).  It is being added to all the time as well.

Basic

• hello_world.pf - The most basic example of a script. Given a name, it will simply greet the person with Hello.

Apps

• podio_app_get_raw.pf - Get the full payload of a Podio App as a JSON object
• podio_app_get_categories.pf - Get all category values in a Podio App category Field
• podio_app_get_cat_id.pf - Get the ID of a category value in a Podio App category Field
• podio_app_ensure_category.pf - Make sure that a category value exists in a Podio App category Field
• podio_app_create.pf - Create a new Podio App as per https://developers.podio.com/doc/applications/add-new-app-22351
• podio_app_update.pf - Update a Podio App as per https://developers.podio.com/doc/applications/update-app-v2-144091799
• podio_category_sync_by_items.pf - Make sure that all category values of an item's App field exist in another item's App field (different apps)
• install_app.pf - Install App or App Pack from App Market into a Workspace
• archive_app.pf - Archive a Podio app
• app_get_view_total.pf - Get number of items in a Podio App's View

Comments

• podio_create_comment.pf - Create a comment on a Podio item
• create_comment_silent.pf - Create a comment on an item silently
• podio_item_copy_comments.pf - Copy all comments from one Podio Item to another
• comment_files_to_item.pf - Copy all files from a Podio Comment to the Item
• item_most_recent_comment.pf - Get the text of the most recent comment on a Podio Item

General Data

• get_var.pf - Get a variable value previously saved with set_var.pf
• set_var.pf - Set a variable to later fetch again with get_var.pf
• get_shared_var.pf - Get a shared global variable value previously saved with set_shared_var.pf
• set_shared_var.pf - Set a global variable to share with others using get_shared_var.pf

GlobiFlow

• trigger_flow_on_item.pf - Trigger a manual GF Flow on a specific Podio Item
• trigger_flow_on_items_multi.pf - Trigger a manual GF Flow on multiple Podio Items at once

Items

• podio_item_create.pf - Create a new Item in a Podio App
• podio_item_field_get.pf - Get the value of one field of a Podio Item
• podio_item_fields_get.pf - Get the fields of a Podio Item as a JSON object
• podio_item_fields_update.pf - Update the fields of a Podio Item given a JSON object
• podio_item_get_raw.pf - Get the full payload of a Podio Item as a JSON object
• podio_item_get_ids.pf - Get the Workspace ID and App ID of a given Podio Item
• podio_item_get_creator.pf - Get the creator of a Podio Item
• podio_item_get_revisor.pf - Get the last creator of the most recent Podio Item revision
• item_clone.pf - Clone (make a copy of) a Podio Item
• item_share.pf - Share a Podio Item with an external user
• item_unshare.pf - UnShare a Podio Item with an external user
• podio_item_delete.pf - Delete a Podio item
• get_item_user_profile.pf - Get the Podio profile data of an Item's contact
• get_item_recent_diff.pf - Get the changes in the most recent revision of a Podio Item

Tasks

• podio_item_tasks_get.pf - Get all Tasks on a Podio item
• podio_task_delete.pf - Delete a Podio task

Widgets / Reports

• report_get_single.pf - Get the value of a single-value report tile
• report_get_detail.pf - Get the values of a table-style report tile
• home_widget_create.pf - Create a new Widget / Tile on your Home stream
• space_widget_create.pf - Create a new text Widget / Tile on any Space, including Employee Network spaces
• update_widget.pf - Update a Podio Text Widget / Tile

Workspaces

• podio_space_get_raw.pf - Get the full payload of a Podio Workspace as a JSON object
• space_add_user.pf - Add a new user to a Podio workspace
• space_remove_user.pf - Remove a user from a Podio workspace
• create_space.pf - Create a new Workspace in a Podio Org
• space_settings_get.pf - Get the settings of a Workspace
• space_settings_set.pf - Change the settings of a Workspace
• install_app.pf - Install App or App Pack from App Market into a Workspace

Organizations

• podio_orgs_get_raw.pf - Get all the user's Podio Organizations and Workspaces

Files

• search_item_files.pf - Find all files on a Podio item matching a search pattern
• file_upload.pf - Upload a remote file by url to a Podio item
• text_file_create.pf - Create a new text file and attach it to a Podio item
• podio_item_files_copy.pf - Copy files matching pattern from one Podio Item to another Podio Item
• podio_file_upload.pf - Upload an existing Podio file to another Podio item
• image_files_to_image_field.pf - Copy images attached as files to a Podio Item to an image field on that Item
• comment_files_to_item.pf - Copy all files from a Podio Comment to the Item
• podio_files_delete.pf - Delete Podio files matching pattern from a Podio Item
• podio_files_to_google.pf - Copy files matching pattern on a Podio Item from Podio to Google Drive
• item_google_files_share.pf - Share an Item's file(s) hosted in Google Drive
• podio_files_print_google.pf - Print file(s) matching pattern from a Podio Item via Google Cloud Print

Users

• get_item_user_profile.pf - Get the Podio profile data of an Item's contact
• get_item_task_user_profile.pf - Get the Podio profile data of an Item's Task's assigned-to user
• get_user.pf - Get details of a Podio user
• get_user_profile.pf - Get the Podio profile data of a user

Web

• webpage_text_regex.pf - Gets a web page url, converts it to text, and then performs a given regex match
• webpage_html_regex.pf - Gets a web page url as html, and then performs a given regex match
• remote_curl.pf - Remote curl to server using POST PUT PATCH DELETE etc

Google

• distance_between_addresses.pf - Get the distance in meters between 2 addresses
• podio_files_to_google.pf - Copy files matching pattern on a Podio Item from Podio to Google Drive
• podio_files_print_google.pf - Print file(s) matching pattern from a Podio Item via Google Cloud Print
• item_google_files_share.pf - Share an Item's file(s) hosted in Google Drive
• google_docs_create.pf - Create a new Google Docs Document, Sheet, etc
• google_doc_getas_html.pf - Get the HTML version of a Google Docs Doc on an Item
• google_new_folder.pf - Create a new Google Drive Folder
• google_new_team_folder.pf - Create a new Google Team Drive Folder

Xero

• xero_api_get_raw.pf - Make a raw GET request to the Xero API as per the API reference
• xero_api_post_raw.pf - Make a raw POST request to the Xero API as per the API reference

oAuth API Services

• api_get_login_link.pf - Get the login link for a user to authenticate to an API
• api_user_urls_set.pf - Set override success and fail login urls for a particular user
• api_user_token_status.pf - Get the details of a user's auth token status
• api_get_user.pf - Get the details of a user via an API
• api_make_request.pf - Make an API request for a user via an API and capture the response

Miscellaneous

• find_in_json.pf - Finds a key in JSON encoded text
• markdown_to_html.pf - Converts markdown formatted text to html
• array_diff_new.pf - Given 2 JSON arrays, returns an array of items that were added
• array_diff_del.pf - Given 2 JSON arrays, returns an array of items that were removed
• array_diff_same.pf - Given 2 JSON arrays, returns an array of items that are in both

How to use ProcFu?

The reason why ProcFu can be used without writing any code is because it works seamlessly with GlobiFlow.  The advantage of it being created by the same person.  

All you have to do is add the Action item called ProdFu

Image
Then select the script you wish to execute
Image

and finally just provide the field values.  

Image

Yes the POST Params field is a bit overwhelming if you aren't use to those types of things.  Sure you could figure it out, but why should you have to if you don't need too?

To make life easier, Andreas created a Chrome Browser extension that will autofill out the parameter field once you select which ProcFu script to run.  All you have to do then is replace the parameter values with what you want.

Let me explain what each field represents just in case you are not sure.

Image

Header(s) - This is your ProcFu authorization code.  The Chrome Extension fills this in for you, with out it you would have to do this yourself.  The Code can be gotten in your ProdFu account settings page.  It is blurred out here because you should not share it with anyone.

Variable Name (prodfu) - Defaulted to just "procfu", this is what catches the returned data you get from executing the script.  You can name it what ever you like.  You'll refer to that name in later GlobiFlow Actions.

From Url - This is the script you will be executing in Url format.  the https://prodfu.com/exe/ part will be the same for all scripts I believe, so you'll just have to change the last section to the desired script.  If you are using the Chrome Extension this field will get filled out for you once you select the Script you want to run.

** To see more information about the script (and a demo) you can click the green Info button on the right side of the field.

POST Params - Each script requires you to pass along some information and this is where you do that.  It must follow a specific format (param1name=value&param2name=value&param3name=value&...).  The Chrome Extension will provide the correct parameter string for you.

Use Case #1

Distance between Addresses

There are a ton of things you can do with ProcFu.  One of which is getting the distance between 2 addresses.  I like to use this to quickly show me how far a property is from my home.  I use that to plan out trips to see houses.  

Here is how I do it using Podio, Globiflow and ProcFU.  

Prereqs =>
Script =>
distance_between_addresses.pf
Tools =>
Podio, GlobiFlow and ProcFU


You can see more information about this script and even test it out here here...Script Testing

Podio Setup

The Podio setup for this only requires adding a number field. This is assuming you already have your leads/prospect App setup with an Address(location) Field.

Step #1: Add Number Field

Drag a Number Field to the desired location in your App Form. Then give it the name "Distance".

Text

Step #2: Set Field Properties

Set to allow 2 Decimal Places

Text

GlobiFlow Setup

For Globiflow we will create a item.created flow that consists of 4 actions. Nothing difficult here, but you should make sure you have the a ProcFu account as well as the ProcFu Chrome Extension.

Step #1: Add New Flow

You'll first have to select the App you want to create the flow for, then from there you can Add Flow.

Text

Step #2: Select Item Created Trigger

We want this flow to run anytime a new lead gets added. So we want an Item Created trigger.

Text

Step #3: Name Flow

Give Flow a Name and Description by editing the fields in the upper left of the Flow window. I called it "Determine Distance".

Text

Step #4: Add Variable

Add a Custom Variable/Calc action and call it MyAddress and enter your address as the value.

Text

Step #5: Add Variable

Add a Custom Variable/Calc and call it ApiKey and enter your Google Maps API Key. (get api key)

Text

Step #6: Add ProcFU Action

If the ProdFU action does not show up, you may need to add the Chrome Extension first.

Text

Step #7: Select ProcFU Script

We will be selecting the Distance_Between_Addresses.pt script.

Text

Step #8: Set Param Values

In the POST Params field, replace the parameter values with the variable names like so.

I also changed the Variable Name from "procfu" to "Distance"

Text

Note: You must select the variables from the token select list that you access by clicking on the icon to the right of the field. Typing in or copying and pasting may not work.

address1=[(Variable) MyAddress]&address2=[(Item) Address]&google_maps_api_key=[(Variable) ApiKey]

Step #9: Add Update Item Action

We will use this to update the Podio Item's Distance field with the value gotten from the ProcFU script.

Note: The ProdFu Script returns distance in Meters, so we have to convert it to miles (1 Meter = 0.000621371 Miles). I also like to round it to 2 decimal places.

Text

Field => Distance
Value => round([(Variable) Distance] * 0.000621371,)

Step #10: Save

You are all set! Just save it and then go add a new lead in Podio to test it out.

Text
Here is what the final flow will look like.
Image

What I Like...and Don't Like

Just like all tools there are some good things about ProcFU and some bad things.  Below is a list of each.

What I Like

  • Gives a GlobiFlow user direct access to many Podio API beyond the Flow Actions
  • Handles the authentications that is required for using the Podio API.
  • No need for coding to use Podio API
  • Has it's own Globiflow Flow Action.
  • Chrome Extension is great a simplifies the use.
  • Actively being added too.  For example the Xero scripts were added as I was writing this blog post.
  • Google APIs (Maps, Docs and more)
  • It's not free, but affordable
  • Has a Podio Community Workspace you can join.

What I don't Like

  • Tutorials and Help Docs could be a bit better.
  • Must have Google Chrome Browser to use Extension
  • Parameter field values are not "dumbed down".  Meaning you still have to follow the Podio API's rules for passing them in.  Some fields like category fields you need to pass in an Array of values.  Not easy for someone who is not technical.

My Final Thoughts

I'll get this out of the way quickly...I am a fan!  The tool seems to be in the early stages and will improve for sure.  You do need to have some technical skills to understand and use to the fullest extent.  BUT it would not be hard to follow someone's example and duplicate what someone else has done.

If you are proficient in GlobiFlow you should be able to use ProcFU no problem at all.  I am very interested in seeing where Andreas can take this tool.  It's possible he could add scripts to interact with many other 3rd party tools.  He probably won't add things specific to real estate investors, but for sure he will add scripts that we can leverage in the future.

As time goes on and I use this tool more I'll post some tutorials on some of my setups.  I love tools that have potential and allow me to think outside the box.  This is certainly one of those.

To learn more, head on over to ProcFu at http://procfu.com/

Scott Costello
Follow me

Comments 2

  1. Hi Scott – do you know if you can export comments from all the items in a podio workspace into a CSV? I’m wondering if you could use podio_item_copy_comments.pf somehow?

Leave a Reply

Your email address will not be published. Required fields are marked *