
Back in part 4 of the guide, I briefly mentioned variable arrays. I said then that I wasn’t going to go into more detail, as it would only complicate things. Now that we’re a few iterations of the guide further along, however, it’s time to dwell into this yet unexplored part of Tasker variables.
Index
- What’s an array?
- Referring to arrays
- How arrays are created
- For loops
- Example: todo list V2
- In conclusion
What’s an array?
Arrays are common in many areas, from mathematics to programming. In Tasker, an array can be described as a base variable which have several child variables. When you use Variable Split on the variable %Hello, you end up with a bunch of child variables like %Hello1, %Hello2, %Hello3, etc. %Hello is then an array with several elements, each element being a variable in itself.
So far nothing new, perhaps with the exception of the terminology – we’ve been using child variables throughout the guide. Each element in an array is a variable, so it can be used as a variable, which is how we’ve been using arrays for so long without calling them that. However, what makes arrays special is what you can do with them in addition to what you can do with normal variables. Because variables in an array is arranged in a way that can very easily be referenced, we suddenly have a whole new set of tools that we can use to manipulate the variables on an array level, rather than treat them as individual variables.
To use arrays, you need to get out of the mindset as variables as single entities. When referring to an array, it’s common to either refer to them by their base variable (like %Hello) or in the format %Hello(). The former is accepted as the input into several array-specific action settings in Tasker, some of which we’ll look at later. %Hello() on the other hand will list the value of each variable in the array, separated by a comma.
If you were to split %ingredients = sugar.milk.flour by the period, you’d end up with the array %ingredients containing %ingredients1 = sugar, %ingredients2 = milk, and %ingredients3 = flour. Adding a Flash action for %ingredients would then flash sugar.milk.flour, because the value of the single variable %ingredients is still sugar.milk.flour. Flashing %ingredients() however would tell Tasker to take the value of each child variable and separate them with a comma, so you’d get sugar,milk,flour. If you were to clear the variable %ingredients and repeat the flashes, you’d get an empty %ingredients on the first, and the same sugar,milk,flour on the second. This is because the array remains even though you cleared the variable that created it in the first place. If you similarly were to clear the array %ingredients, the first flash would be unaffected, while the second would just flash empty variables.
This can be a bit confusing, because %ingredients can refer to the single variable %ingredients or the array %ingredients. Perhaps the most common mistake when dealing with arrays is to refer to one when you mean the other, causing whatever you do to be based off a single variable instead of an array, or vice versa.
Referring to arrays
Since arrays are numbered lists of variables, you get some new ways to refer to them. The list of these ways are available in the official user guide, so I’ll just quote them here:
If the four variables %arr1, %arr2, %arr3, %arr4 hold respectively a, b, c and d then we have an array with 4 elements. These variables can be used just like any other, however it is also possible to access them in special ways. Here are some examples:
- %arr(#)
The number of defined array elements (4 in this case) - %arr(#>)
The index of the first defined array element, or 0 if none are defined (1). - %arr(#<)
The index of the last defined array element, or 0 if none are defined (4) - %arr(#?b/c)
A comma-separated list of the array indices (lowest to highest) with matching values, or 0 if none match (2,3 in the example) - %arr(>)
The contents of the first defined array element (a) - %arr(<)
The contents of the last defined array element (d) - %arr() or %arr(:)
All of the array elements separated by commas (a,b,c,d) - %arr(2) or just %arr2
The content of the element with index 2 (b) - %arr(2:4)
Contents of defined elements with indices 2 to 4 (b,c,d) - %arr(:3)
All the defined elements with indices up to 3 (a,b,c) - %arr(3:)
All the defined elements with indices starting from 3 (c,d) - %arr(1:2)
All the defined elements with indices from 1 to 2 (a,b)
Keen eyes might recognize the first of these, %arr(#). That’s because we used it in an example in part 5 of the guide, to count the number of lines in a text files. What really happened was that we read a text file into an array, each line being a new variable in the array. Using (#) behind the base variable then makes Tasker count the number of variables in that array, which in turn is the number of lines.
You will of course also recognize %arr() here, which is the same as what we just talked about above. These methods listed above show us different ways of referring to arrays, allowing us to for instance refer to the last element in an array without knowing what number that is.
One method that is missing here (because it’s not exclusive to arrays) is the format %arr(%variable). Assuming you have a %variable with a numerical value, you can refer to the array element in that spot in the array by using this format.
How arrays are created
As for how you make arrays, I already covered Variable Split. I’ll once again quote the official user guide on this, since it has it pretty much nailed down:
- using
Variable Split:
Variable Set %arr a,b,c,d
Variable Split %arr
If your data has commas in it, you can separate the values with e.g. @ and specify @ also in theVariable Splitaction. - by assigning individual elements with
Variable Set:
Variable Set, %arr3, c. - using
Array Pushto add an initial element - some other actions also create arrays for their results e.g.
List Files
Variable Split is perhaps the most common source for arrays, although some other actions, like List Files mentioned here, can also create them. Other than that, you can also create them manually with Variable Set or Variable Push.
For loops
The For and End For actions are found together with If, Else, and End If actions in Tasker. Like If/End If, For/End For creates a group inside the task, where nested actions are visible nested in that group. The initial For action can be a bit confusing, but once you get a hang of it, it’s actually very powerful. It asks you for a variable, as well as a comma separated list of items. For each item in the list, the For action will run the actions in the For group with the current item as the value of the specified variable. For instance:
For, Variable: %itemtoflash, Items: hello,world,how,are,you
Flash: %itemtoflash
End For
This would loop the group, in this case the lonely Flash action, one time for each item in the list, in this case 5 times. Each time, the variable %itemtoflash will be updated with the next item in the list, starting with “hello”, ending with “you.” 5 flash messages appear, each with one of the items from the list.
The benefit of this system is that you can specify a set of actions and then run a whole bunch of values through it without needing to duplicate the actions for each time. It takes some getting used to, as you for instance need to make sure that if you save something with each, that file name has to be unique for each item.
Example: Todo list V2

Recently I decided to redo my entire todo list system (which is described in part 3 of the guide) to give it better performance and more features. The system I came up with uses arrays at its core, and is quite a bit more effective than the old one. I also added a new generic todo list that doesn’t trigger any alarms, along with redoing my three situation-specific lists. I’m going to cover the generic list here as the trio adds a bit of complexity to it all.
The first todo list system I created in Tasker used methods that weren’t ideal. Adding to the list was done by saving to a text file, a file that was read into a single variable and showed in a text field. The benefit of this was that the list would be formatted for reading in the text file directly, each line being separated by a line shift, and with no use for a more direct splitter. The downside was that the entire list became a single entity, making single selection impossible and whatnot.
The new list is based around arrays. Each list is still stored in a text file, but the text file is more of a backup feature than it is the main storage for the items. Instead, the items are stored in a global array, which is directly compatible with the text file by writing %Array() to the text file (writing the value of each array element, separated by a comma), and reading it back into a variable which you then split by the comma (reverting it back into array form).
The array can then be used as the source for a menu scene element, which most people are familiar with through the Menu alert action, which automatically populates a scene with such an element for you. You can use that element on its own as well, and by using an array as the source, it creates a menu list where each array element is an item in the list. The items in the list can both be selected and tapped, which means that we suddenly have the tools needed to make the todo list a bit more like a third party todo list app – i.e. each item can be selected.
Trigger task
There’s quite a bit that’s needed to make this work, starting with the trigger task. It looks like this:
- Read File, File: gentodo.txt To Var: %Gentodo (reads my generic todo list text file into a variable)
- Variable Split %Gentodo, Splitter: ,
- Variable Set %Gtselectedd to 0 (resets a variable used later. Double D is not a typo)
- Array Pop %Gentodo, Position 1, If %Gentodo doesn’t match ++ (removes the first entry in the list if it’s blank. I frankly don’t remember the circumstance where that was needed, but I’m sure I had a reason for it when I did it)
- Show Scene Generic Todo
The scene: Menu element
The menu element is the heart of the scene, covering most of it. Source is here set to Variable Array, and Variable is then %Gentodo. Note that since source is an array, variable refers to the base variable of the array in order to also know what the array is. Had it asked for a variable, %Gentodo would have been treated as just that single variable. Selection Mode is set to Multiple, since I wanted to be able to select multiple items.

Note that menu scene elements have internal scenes. The Item Layout option has a scene besides it that can be clicked and edited. It determines how each item looks, and it’s pre-populated with a dynamic text field and a dynamic icon field. Those will be populated with data from the menu element’s source, but you can still use this to choose how it will end up looking. You can also add more to it yourself. My generic todo list has a static image of a holo themed pin in front of the text field, which ends up looking like a bullet point when the menu element is fully populated. Aside from having a few predetermined elements, this internal scene is the same as the scenes you’re used to.
The Item Tap tab task for the menu scene element contains the following:
- Variable Set %Gtselected to %select_indices
- Variable Split %Gtselected, Splitter: ,
- Variable Set %Gtselectedd to %Gtselected(#)
%select_indices is an automatically generated variable (one of four, the other three being %select_labels, %tap_label, and %tap_index) that is populated when you interact with the menu scene element. It contains a comma separated list of the item number of the selected items, starting at 0 (this will be changed later). So, if you select items 1, 3, 5 on the list, %select_indices will show 0,2,4.
%Gtselected(#) counts the number of items in the array %Gtselected, which is then put into %Gtselectedd. In short, %Gtselectedd shows the number of selected items.
So, by the time you’ve selected something in the menu scene element, you have an array with the numbers for those items as well as a variable with the number of items selected. That brings us to the delete function.
Warning: There’s currently a bug where %select_indices doesn’t clear itself if you deselect the last item. As such, there’s no system here to handle that situation. Basically, as it is now, you have to refresh the entire scene to properly deselect the last item.
The scene: Delete button
The delete (X) button in my scene has two functions: simply cancel out of the scene, and delete items. The first is handled by a simple Destroy Scene in the Tap tab task. Deleting items is more complicated, and is triggered by holding down on the button. The actions in the Long Tap tab task are as follows:
- If %Gtselectedd > 0
- Menu, Title: Delete %Gtselectedd items?, Item 1: Yes (Variable Set %Gtcd to 1), Item 2: No (*nothing*)
- If %Gtcd matches 1
- For, Variable: %gendelete, Items: %Gtselected()
- Variable Add, Name: %gendelete, Value: 1
- Variable Subtract, Name: %gendelete, Value: %shuffle, If %shuffle doesn’t match *shuffle*
- Array Pop, Variable: %Gentodo, Position: %gendelete
- Variable Add, Name: %shuffle, Value: 1
- End For
- Write File, File: gentodo.txt, Text: %Gentodo()
- For, Variable: %gendelete, Items: %Gtselected()
- End If
- End If
- Variable Set %Gtcd to 0
- Variable Clear: %shuffle
- Variable Set: Gtselectedd to 0
So, lots of nested stuff here. The first If simple makes sure that there are selected items before you try to run some delete task on them. Keen eyes may have noticed that while we reset %Gtselectedd in the launch task, there’s no Variable Clear for %Gtselected. That means that the last values in the %Gtselected array persists, however, because the entire delete task is nested in an If for %Gtselectedd (which is reset every time), we won’t ever get a situation where we accidentally delete last time’s selected items. On top of that, it effectively disables the Long Tap task if nothing is selected.
The Menu action that sits as the first action in the If group must not be confused with the menu scene element that I’ve referred to so many times. This action simple creates a new pop-up box using the standard menu action, in this case with Yes and No items in order to create a simple confirm dialog. Clicking Yes sets a variable that the following If group is dependent on. That variable is also reset at the end of the task, so that it’s always 0 unless you click Yes to confirm deletion.
Next we have our For loop. It runs the four nested actions once for each element in the array %Gtselected. The Items field here wants a comma separated list, not necessarily an array, so we give it the %Gtselected() form. For each element in the %Gtselected array, the value of that element will be written to %gendelete, used in the following four actions, and then it goes on to the next element, putting its value in %gendelete, and so on.
As for the four nested actions, the first simply fixes a “developer brain fart.” Right now, menu items start at 0, while array elements start at 1. So, the value of array element 1 is the same as menu item 0. This will be fixed soon according to the Tasker developer:
Will fix that, it should be the same as the tap indices obviously.
It’s going to cause problems for some people’s scenes, but it’s too silly to leave like that.
By adding 1 to %gendelete, which in turn contains the number for the selected menu item, we bring that number up to the level of the array, so that menu item 1 is the same as array element 1.
When those two match, it becomes very easy to remove things from the array, using the third action in the For loop, Array Pop. By simply using Array Pop with %gendelete as the position, we pop out the array that’s in that position in the list. The other elements in that array then get pushed down so that if you remove the third array element in a five element array, number four becomes number three.
Wait, you skipped an action! Yes, on purpose. The second action in the For loop, combined with the fourth, fixes an inherent issue with this system. The first time the loop runs, the array element numbers will match the menu item numbers, once we have added 1 to compensate for the difference in starting position. However, because all the array elements get pushed down when we remove an element, the numbers won’t match after the first time!
Let’s say we have 10 items in the list/array, and we select number 3 and 5. %select_indices will then show 3,5 (always in order, no matter which one you select first). The For loop then pops element 3 from the array, leaving us with 9 elements, where the previous number 5 is now number 4. When the For loop then comes around to pop number 5, it pops what was number 6 when you selected the items
To fix this problem, we add 1 to %shuffle at the end of each loop. %shuffle then represents the number of times the list has been shrunk. The Variable Subtract action in spot two of the group subtracts this number from the number of the element we’re going to pop, but only if %shuffle actually has a value (the If condition takes care of this). If we delete 5 items, then the number of the fifth item will have to be adjusted down by 4 in order to match up.
When the loop is done looping, it’s time to write the changes to the file. Unlike the first version of the todo list, we here overwrite the entire file, because we have all the information in the array – so the file is outdated. By writing %Gentodo() to the file, we write a comma separated list of items to it. When we then read that back into a variable, and then split to an array the next time we open the scene, we simply split by the comma.
At this point we end both our If groups and move to the three actions that can always run, if only for the sake of it. We essentially clear %Gtcd, %shuffle, and%Gtselectedd, so that they’re ready to go next time. I didn’t actually think %shuffle needed clearing since it’s a local variable, but it turns out that if you were to delete something in several batches while in the scene, %shuffle would continue counting with the last used value if not cleared.
The scene: Selected item indicator
There’s a text field on the bottom of the scene showing “%Gtselectedd items selected.” It’s as simple as that.
The scene: New item button
The button to add a new item isn’t very complicated. The Tap tab task looks like this:
- Variable Query, Title: New item, Variable% gentoadd
- If %gentoadd doesn’t match *gentoadd*
- Array Push, name: %Gentoadd, Position, 9001, Value: %gentoadd
- Write File, File: gentodo.txt, Text: %Gentodo()
- End If
This task is simple. It starts by using the Variable Query action to ask the user for the title of the item to add. It then does an If check to see if something was actually entered into the variable. If so, it uses Array Push to add that to the array. By specifying a very high position (it’s over 9000), you’re pretty much guaranteed that the array is smaller than that, and in those cases, it simply adds it after the last one. So, if you have a 10 element array, then add a new item, it will become number 11, not number 9001. After that, it writes the changed array to the file.
A nice side effect of using arrays is that when the file contents are read into the variable, a comma that you put in is treated the same as a comma that originally separated array elements. This allows you to add multiple items in one go by adding an item in the format 1,2,3,4,5. Once added, it will show as a single list item with all numbers in one, but when the list is refreshed (scene destroyed, relaunched) each of the items seperated by a comma will be its own item. This does mean you can’t use commas in the titles as the title will then be split, but I think the benefit of being able to add a bunch of items in one go makes up for that.
The scene: Refresh button
Alerts
This is my generic list, which is new (I used to just use a widget), but the three other lists I have (home, shopping, morning) also use this new array system. The basic concept is the same, just slightly different to accommodate three lists in the same scene.
Those three lists all have different alerts, so you’d assume that those needed changing – but they don’t really. They all work by reading the contents of the file, checking to see if there’s anything in the file, then acting based on that. Items are now separated by a comma instead of line shift, but that doesn’t affect the alert systems.
AutoRemote integration
All my todo lists can now be added to remotely from AutoRemote. This system had to be changed when I redid the todo system itself. The format for adding is the same, i.e. “todo tag=:=item name,” just with the addition of a generic/universal list tag. The task that activates upon receiving a message in that format then has four If groups that are all identical except for the variables and file paths being adapted to each list. The If condition for each group is then a match with the appropriate tag. For the universal list, this group looks like this:
- If %arpar2 matches generic/universal
- Read File, File: gentodo.txt To Var: %Gentodo (reads my generic todo list text file into a variable)
- Variable Split %Gentodo, Splitter: ,
- Array Push, name: %Gentoadd, Position, 9001, Value: %arcomm
- Write File, File: gentodo.txt, Text: %Gentodo()
- End If
By now you know what all of these do as they’ve been used before. The only real difference is that it pushes %arcomm into the array instead of %gentoadd. Like I said, there are four such groups in the same task, one for each of my four lists. At the end, independent from the If groups, is this:
- Say “Item added to %arpar2 list”
AutoRemote Chrome integration

So far I’ve only used the AutoRemote Chrome plugin to copy text from my browser to my phone. I thought I would make it easier to add items to my list, so I simply added a bunch of rules to the Chrome plugin. Each rule has a name that doesn’t really matter, and a command like “todo shopping.” This then allows me to select text in Chrome, right click, and send to my todo list (receiving end is the same as above). It’s a very handy option to have, as I can just go to any search field (like on google.com), type something in, right click it, and send to any of my lists.
Video
Update: Tasker beta 1.3.2b2 and above
Turns out that the array/menu numbering difference and the deselect bug have both been fixed in the latest Tasker beta, which means that the next release version will also have them fixed. The change in the todo list is that you don’t add 1 to %gendelete with the fix, and the Item Tap tab task in the menu scene element should be like this:
- If %select_indices doesn’t match *select*
- Variable Set %Gtselected to %select_indices
- Variable Split %Gtselected, Splitter: ,
- Variable Set %Gtselectedd to %Gtselected(#)
- Else
- Variable Set %Gtselectedd to 0
- End If
In conclusion
Arrays and For loops can save you a lot of hassle. Right now there’s something of an issue with global arrays and menu scene elements, where the whole thing slows down significantly because the global variables have to be set all the time. It doesn’t matter much on a small todo list, but in a later article I’ll show how to make a Tasker-based file browser, where it does matter. I originally made such a browser using arrays and found it to be extremely slow, and after some help from another Tasker user, it turned out that arrays were extremely inefficient in that particular situation. There may very well be a V3 of this list somewhere down the line, as I already know several ways to speed it up. Even so, the current iteration works great, at least for my use.




















Thank you once again for taking the time to write these articles.
Since you started these i want from not knowing what the hell to do with the program, to creating apps that i share with family and friends to automate a whole ton of crap. the more articles you put out about tasker the more ideas i come up with. the learning curve on this thing is INSANE but so worth it. Without your help a lot of us would be stuck.
I have a request, could you show us how to use the Android Calendar API not the Google calendar API if you know how??? If the android API can be used if should make the tasks go much faster and not rely on the network to get data… (in theory)
Keep them coming!!!
Thank you for the kind words! As it happens, I’m sitting here testing some calendar related things as we speak. However, I don’t think it’s possible to use that API from tasker. I could be wrong, but it seems like one of those autoalarm situations where an app can do it easily, tasker can’t
Hiya mate. Great article as always, thanks, i’d be screwed without pocketables.
I have a really odd bugs with this one. I have my list set up the same way as you, with the static image of a holo themed pin in front of the text field, when i look at this part of the menu item layout in Tasker, i can see the pin, when i fire up the todo list, i can’t see it. I can see the stuff in the list, and everything looks like its working ok, i just can’t see the pin.
I’ve been sat here clicking in Tasker for a while now, and i have no clue how to fix this.
Any ideas are welcome at this stage.
Did you add a new image element with the pin, or did you use the one that’s in the item scene to begin with? That one is there for when you use the menu element with a list that contains icons (either directly or through the Menu alert action), and so it’s designed to be replaced for each item. That means you can’t specify a default image, as it will be replaced with nothing. If you add a completely new image element in the item scene, it should work.
I know this because I made the exact same mistake and couldn’t for the life of me figure it out.
I’m sat here thinking about how to make this work on the multi list. I’m not sure how to make that work at the moment, i can kinda see how i should start, but i’m not 100% sure.
It wouldn’t actually have mattered if I had scrolled down, because the camera and voice add options are for V3 of the list. This is V2. Doesn’t look different, works completely differently :/
Yes, you said at the end of the video that the basic concepts should work with V2, so i figured that the V2 version would have the same sort of thing going on, but different, if that makes any sense. I’ll take a look at it in the morning i think, see if i can get something going
Yep, it will, but it does have to be redone to match the system used in V2. I think that just cloning the new item task and replacing the variable query with the system for voice and photo should do it, though can’t tell for sure if there will be any issues (dont think there will). V2 is quite a bit simpler in how it works. V3 is faster, but more complicated behind the scenes. V4 is basically a version of V3 that is extremely dynamic, so that you no longer have to deal with cloning tasks for each new list. Got 5 lists now and all of them share the same basic tasks and scenes, making it possible to add a feature to all by adding it in one place
Bloody hell, that sounds wicked. I’m going to nominate you for the nobel peace prize for services to Tasker. I’ve really enjoyed part 7, now if i can get the multi list sorted out i’ll be as happy as a pig in S^*!
Haha, automating peace on Earth using Tasker. For the record, the multi list is gone in V4. Those three lists, the universal one, and one more that triggers alerts are now equal in that they’re all single screen etc. Clicking a button now opens a menu asking which list to open, and you can switch between those lists inside the scene
WOW … That sounds amazing, do you have any plans to do a guide for that, or not? I still have Astrid installed and i’d just love to uninstall that. For the record, i don’t really use it that much now because i spend ALL my time playing with this. I could uninstall 70% of the stuff i have and not really notice since i got the Tasker bug.
BTW, i gave up with Eventghost and Autoremote for building the windows media center Tasker remote thing. I got it all working, and then i installed Unified Remote, that’s a really good app!!
Nah, there won’t be a guide for V3 or V4. At this point, there’s no practical difference between V4 and an app, other than the way it was made. It’s even fairly easy to set up right out of the box, and you can add or remove lists in minutes. However, I’m not an app developer. I don’t want to become and app developer. I don’t want to spend my time dealing with device/OS specific bugs, etc. The beginner guide’s examples were meant as theoretical examples for people to grasp the concepts in order to make things themselves. When you make something from scratch for your device, you know how it works, you can fix bugs that you come across, and you know where it breaks if it breaks.
But what actually happened is that people are using them as tutorials for replicating exactly what I have on my device. That’s fine, flattering perhaps even, but it was never the intention. It creates situations where I’m being asked for help in fixing bugs that often aren’t present on my devices (unlike this, which I did run across myself).
Point being, releasing a guide for V4 would open up a pandora’s box that I don’t want to open. I know that even if I post a downloadable project file and tell people that it comes with no instruction manual, no support, and is just posted for those who have the ability to tear it down and understand how it works – I will have 10 comments asking X, Y and Z by the next day. I understand the people who ask so well, I do it myself on things I don’t understand, no matter how many disclaimers there are xD That’s why I simply can’t do it. Not with the work load I have in other parts of life these days.
And yes, Unified Remote is great. Developer isn’t all there, but it’s still nice.
That’s fine mate, I understand your point totally. I’ve got the same Galaxy S2 as you, so I don’t really have many bug issues, the bugs I do get are self made because I didn’t understand something totally. I found one this morning in the calendar that I had an issue setting up, if you remember. I didn’t have anything in the calendar for today, but the variable wasn’t cleared from yesterday, if I can’t figure that out I’ll just put a variable clear in at the end, if it becomes a needle in a haystack job.
I think my next project will be the voice and picture list add, then try and figure out the multi list, after that I’m not sure. I like the look of the TellStick home automation, i’d like to get fitted in my Tasker system, maybe start looking at stuff that will come in handy in my later years, the possibilities are endless.
I never used the calendar thing much, so there are probably bugs in the system. My calendar is packed each day, but I need to check it the day before to know when to get up, so having it read something when I wake up is pointless. That means it’s not getting updated and won’t be that advanced to begin with. I’ve actually not used Tasker much in the last couple of weeks. I mean, I use what I’ve created in it all the time, just not spent any time tinkering with new creations or additions to old ones.
Good afternoon mate. I hope your weather is better than we have in the UK today. I took a day off Tasker yesterday, so I started the V2 upgrade this morning. Here’s where I’m at with the upgrade. I can now add with voice and the camera, it was straightforward getting that to work, but it’s the next part I’m having fun with, I’ll start with the open photo first
In the item long tap on the scene I have this.
If %tap_label ~ *PHOTO-*
Variable Set %fileopen to %select_indices
Variable Split %fileopen Splitter –
Open File DCIM/Tasker/%fileopen2.jpg
First thing this morning when I did this it worked, but only the first time, and only if I didn’t quit the scene. The second time (after quitting the scene) and trying to open another photo, I could see the identifier (time in seconds) but, it was identifier.jpg. (note the second . after the g on the file extension) After getting that far, I figured I’d have it working soon, but no such luck. For some reason what I get now after rebooting my phone is, file not found DCIM/Tasker/%fileopen2.jpg. (note the second .) It doesn’t matter it I use %fileopen.jpg %fileopen1.jpg or %fileopen2.jpg I always see the second dot now.
Moving on to the Else
Else
Variable Query %edit
Variable Set %Edit to %edit
Variable Search Replace %Gentodo(#) Search %select_indices
Replace Matches with %Edit
Variable Clear %edit
End If
I’ve used %Edit to see if my edit was making it into the Variables tab, so I guess it’s something to do with the search replace that I do not understand correctly. I’ve used %Gentodo and %Gentodo(#) with the same result, I can see the edit text in %Edit if I don’t clear it with variable clear, but it doesn’t change in the list
Any suggestions would be appreciated so I can move on, because this is doing my head in, thanks mate
Unfortunately you’ve created quite the mess there. You use %select_indices instead of %tap_label, which is multi select index numbers instead of single tap name. Couldn’t be more different in this particular situation.
Your edit bit is obviously taken straight from the video, however the video shows V3. Like I said, V2 works nothing like V3, so anything that has to do with adding or reading information will be completely different. They’re not the slightest bit compatible aside form using text files in the same format.
When I said in that other article that these systems (edit, photo, voice) work for V2, what I meant is that there’s no reason you can’t make a V2 version from the ground up. You cannot however just copy things over. It needs to be fully rewritten, which also means you need to understand how V2 works like the back of your hand. I wouldn’t even attempt this without understanding 100% how V2 handles data using variables. There’s no simple change to make to any of what you have there that will make it work.
I realize it’s frustrating to see me post videos of features, say it’s possible to include them elsewhere, and then not say anything about how. But, like I’ve said, this todo list system has moved to becoming a full blown app, which means it’s out of what I can practically provide support for. I quickly realized it was a mistake to post the V3 video, which is also why I haven’t posted any additions made to it since then in any form.
It pains me to have to draw a line, but the way this particular project is right now it’s simply so far away from what can be constituted a beginner project that I just have to do it :/
Andreas,
Thank you so much for this tutorial. I have learned so much about how to use Tasker in the past week it’s incredible. Only a bit less incredible than what I have left to learn!
I haven’t been able to make the todo list fully functional. The New Item button doesn’t function properly. The Query opens but when I populate it and hit the check mark it closes but nothing gets added to the list. I’ve remade the whole thing three times now.
Also, in the For loop on the delete button, in the fourth action Variable Add you refer to “text: % Gentodo()”. Where does this text go? Does it go in the Label field? In the Wrap Around field?
Again, thanks for all of your hard work for us noobies.
That bit in the delete For loop is a copy/paste error or something, shouldn’t be there. The screenshot on the side is a good reference in case of typos.
I don’t know why the add button doesn’t do anything for you, but it sound slike a typo or something like that. make sure to use the run log to see if it errors out. I also notice that the stars on either side of gentoadd in the if condition looks like quotes, so make sure you didn’t use quotes in yours.
Generally speaking, these examples aren’t really made to be duplicated, they’re made to show the use of a concept in practice. The version of this system that I actually use myself now is version 4, whereas this is version 2, so I get confused myself when I look back at this
Version 2 er very slow in comparison, but it is easier to understand. Version 3 and 4 don’t even use arrays anymore, and instead use a “trick” that I will talk more about in an article in my new Advanced Tasker series. Point being, it’s hard for me to spot obvious mistakes in a system that for all intents and purposes is dead. At the same time, mastering arrays at this level is needed to understand things in the Advanced tasker series
I should alsomentioned that it’s very smart to use Flash actions for error sourcing. If you put one in the for loop in the add item task, you can see if the loop triggers at all. Put in the variables you use there, and you can see if the variables are correct, etc
Andreas,
Thank you for your response. I took what you told me to heart and started from scratch using the principles learned in this exercise. I was able to make everything look and work the way I wanted it to. I truly appreciate the enormous amount of time and talent you put into helping us beginners!
Hi,
I might be old fashion (53 old), but I find it really difficult to get a quick information from such an online, splitted manual. For instance, I could not rapidly find out how to generate a simple sequence, actionned by a widget.
So, as a computing expert, why not generate a pdf manual, with an old fashioned index at the end ?
This isn’t a manual, this is a tutorial. It’s in no way meant to give you “quick information” about anything, it’s designed to be read from A to Z. If you want a manual, go to the app’s website and use the one that’s there.
Is there a way to have Tasker automatically respond to a text message when you are driving? The response could be something like “I am driving right now; I will check my messages when I stop”.
Yes, that’s perfectly possible. Read this guide from the beginning and you’ll learn the basics for how Tasker works, and then you’ll be able to make something like that yourself
What an effort! I’ve learnt a lot in just 30 mins reading your tutorials. I’d buy you a beer for this if you’ll visit Sweden anytime