Recently on reddit I came across and interesting Workflow (thread) from u/schl3ck. Schl3ck was sharing, what to my eys, is a pretty complicated series of workflows regarding various math functions. What caught my eye was the delivery method, where he provided one workflow, which, when ran would import the others. It imported these in a similar method that my Backup/Restore does, using a combination of Base64 Encoded data and the workflow URL scheme.
What blew my mind was the concept of packaging a group of workflows together as a way to easily share them. I looked at Schl3ck's workflow, as well as my own and came up with a couple that I think Are pretty useful.
How it works
The first one, Pack Workflows, provides you with a list of your current workflows, and has you select which ones you want to share. It then
- Zips your selected workflows
- Base64 encodes the zip file
- Copies that encoded text to your clipboard
Next comes the one part I've yet to fully crack to make it more automated, and I'm open to suggestions on how to do so.
In the second one, Unpack Workflows, you take that copied text from Pack Workflow, and paste it in the first text box. After running the workflow it will
- Decode the Base64 text
- Extract the zip file
- Re-encode the individual files for use in the URL scheme
- Import the workflows
However, what you would really do is share the workflow after you've pasted in the opening text. This means on the reciepient device, when ran, they would get all the workflows it included.
I don't know if there is an upper limit to how many workflows it can use. I can tell you, at the time I wrote this, I had 64 workflows and was able to perform the process with them.
Things to note
When you import a workflow, the first time you run it you are still presented with the modal pop-up telling you that you are about to run an imported workflow, and confirming that's your wish. This is good from a device security standpoint.
If you already have a workflow by the same name, it breaks it and will only give you the option to import the very first one. Schl3ck got around this by using the if Action to compare the import names with your exisiting workflows. I chose to ignore this, as the intent is to share with people who don't already have them.
This actually can be used to batch rename, or more accurately, add to an existing name. For example, say I had a bunch of image related workflows and I wanted to append the 📷 emoji to them. (This can be useful when filtering specfic groups of workflows.) With just a couple, it's not that hard to manually change their name. But if you have quite a few then packing them in this workflow would be faster. During the Repeat with Each action, there is a text field with a Name magic variable in it. Simply add your desired emoji or text to that and each imported workflow will have that in its name.
As I said above, this process could probably be streamlined more. But I'm pretty happy with how it works in practice.
If you're interested to see how it works then get this workflow: Unpack Workflows. After running it, you will have the Pack Workflow as well.
Here is a gif of it in action.