Re: Way to read all Calendar appointments for the day?

2,636 views
Skip to first unread message

Pent

unread,
Nov 4, 2012, 3:12:34 AM11/4/12
to Tasker
It's possible, but only by using Misc / Test in a loop, testing e.g.
every 5 minutes for the whole day in advance.

Your goal sounds more like something for a calendar app.

Pent

Michael Yeager

unread,
Nov 6, 2012, 9:15:00 AM11/6/12
to tas...@googlegroups.com
I have a routine that does exactly this and texts each event to me. I haven't finished everything I want to do with it and if you wanted the events in another format other than SMS you'd have to handle that on your own. It's a working routine with lots of room for customizing. I'll attach it here later...

ashburn15 (Syed Abu Bakar)

unread,
Nov 6, 2012, 11:55:10 AM11/6/12
to tas...@googlegroups.com
I'm not sure if Tasker can read events from the calendar but a non-Tasker way is to use the Smooth Calendar Widget by Carl Cedergren https://play.google.com/store/apps/details?id=se.catharsis.android.calendar&feature=search_result. I've set it up to show me the next 5 events...

On Sunday, November 4, 2012 5:18:51 AM UTC+8, Gabe wrote:
Hi!

I can't find a way to get Tasker to read all calendar appointment for the current day. I'd do this task every day at X:00 AM so that I know my schedule as I wake up.

(using gmail calendar of course)

Thanks!!

Cory Carter

unread,
Nov 6, 2012, 12:12:04 PM11/6/12
to tas...@googlegroups.com
I found this when reading through the guides on the tasker website. This might help, havent tried it yet but might get you close to your goal.

Bob Loblaw

unread,
Nov 6, 2012, 1:02:35 PM11/6/12
to tas...@googlegroups.com
For the calendar app, I use Jorte and the week widget across the top. Works!

Bill DeWitt

unread,
Jun 13, 2014, 2:12:32 PM6/13/14
to tas...@googlegroups.com
Did you end up getting this to work? I use "Good Morning" alarm now, which does that, but I want more control over the process.

Brandon Horwath

unread,
Jun 13, 2014, 3:08:02 PM6/13/14
to tas...@googlegroups.com
Just post in a new thread Bill if the most recent is this old.

Here's a partial excerpt from a task that is an event announcer, available on the tasker user wiki. Just running this as a test should do what you want.

All Events Today (189)
A1: Flash [ Text:Started Long:Off ]
A2: Variable Set [ Name:%time To:%TIME Do Maths:On Append:Off ]
A3: Variable Split [ Name:%time Splitter:. Delete Base:On ]
A4: Variable Set [ Name:%time1 To:(23-%time1)*60 Do Maths:On Append:Off ]
A5: Variable Set [ Name:%time2 To:60-%time2 Do Maths:On Append:Off ]
A6: Variable Add [ Name:%time1 Value:%time2 Wrap Around:0 ]
A7: Variable Set [ Name:%after_minutes To:%time1 Do Maths:On Append:Off ]
A8: Variable Set [ Name:%before_minutes To:%time1 - 1441 Do Maths:On Append:Off ]
A9: Variable Set [ Name:%minutes_end To:1440 Do Maths:Off Append:Off ]
A10: Variable Add [ Name:%minutes Value:%before_minutes Wrap Around:0 ]
A11: Variable Set [ Name:%calendar_check To:%minutes * 60 Do Maths:On Append:Off ]
A12: Variable Add [ Name:%calendar_check Value:%TIMES + 60 Wrap Around:0 ]
A13: Variable Convert [ Name:%calendar_check Function:Seconds to Long Date Time Store Result In:%calendar_begin ]
A14: Variable Set [ Name:%subtract To:14 Do Maths:Off Append:Off ]
A15: Flash [ Text:Analyzing Long:Off ]
A16: Say [ Text:Analyzing Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
<Test Anchor>
A17: Anchor
A18: Test [ Type:Calendar Title Data:%calendar_check Store Result In:%calendar_results ]
A19: Variable Set [ Name:%results To:,%calendar_results() Do Maths:Off Append:On ] If [ %calendar_results(#) != 0 ]
A20: Variable Set [ Name:%subtract To:%minutes_end Do Maths:Off Append:Off ] If [ %minutes_end < 14 ]
A21: Variable Subtract [ Name:%minutes_end Value:%subtract ]
A22: Variable Add [ Name:%calendar_check Value:%subtract * 60 Wrap Around:0 ]
A23: Goto [ Type:Action Label Number:1 Label:Test Anchor ] If [ %minutes_end != 0 ]
A24: Flash [ Text:Analysis Complete Long:Off ]
A25: Say [ Text:Analysis complete Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
A26: Variable Convert [ Name:%calendar_check Function:Seconds to Long Date Time Store Result In:%calendar_end ]
A27: If [ %results Is Set ]
A28: Variable Split [ Name:%results Splitter:, Delete Base:Off ]
A29: Array Process [ Variable:%results Type:Remove Duplicates ]
A30: Array Process [ Variable:%results Type:Squash ]
A31: Array Pop [ Variable:%results Position:1 To Var: ]
A32: If [ %results(#) = 0 ]
A33: Say [ Text:No events from %calendar_begin until %calendar_end Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
A34: Else
A35: Say [ Text:According to the calendar for %calendar_begin until %calendar_end, you have %results(#) events, %results() Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:On ] If [ %SILENT ~ off ]
A36: End If
A37: Else
A38: Say [ Text:No events from %calendar_begin until %calendar_end Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
A39: End If

Hope this helps.

Bill DeWitt

unread,
Jun 13, 2014, 4:23:58 PM6/13/14
to tas...@googlegroups.com

Thanks, I'll work through this.

Brian King

unread,
Jun 13, 2014, 4:52:45 PM6/13/14
to tas...@googlegroups.com
Can either of you explain how the "Test" action works? I've spent too much time working on calendar integration and it seems like I was missing this. It also seems like it could be good to know. Any insights are apprciated.

Brandon Horwath

unread,
Jun 13, 2014, 5:11:14 PM6/13/14
to tas...@googlegroups.com
Hit the little '?' icon when in the edit action menu for a test action.

The little '?' icon is like help tips.

Depending on the test, the data field contents needs to be adjusted.

Brandon Horwath

unread,
Jun 13, 2014, 5:14:47 PM6/13/14
to tas...@googlegroups.com
I've spent too much time working on calendar integration

Then, don't waste anymore:
http://brandon-horwath.wikidot.com/voice-calendar

Bill DeWitt

unread,
Jun 13, 2014, 5:22:59 PM6/13/14
to tas...@googlegroups.com


Thos test actions seem very handy. Which calendar do they test and can you change that?

Brandon Horwath

unread,
Jun 13, 2014, 5:54:04 PM6/13/14
to tas...@googlegroups.com
Which calendar do they test and can you change that?

All of them, by default.

There is a way to change that. It involves using another loop though. Unfortunately, at the moment I can't recall the exact method. It has to compare against the calendar title for a specfic index in %CALS though, I remember that.

Bill DeWitt

unread,
Jun 13, 2014, 6:16:44 PM6/13/14
to tas...@googlegroups.com
Dang. In that case I did something wrong. I have many appointments but none get listed. I'll go back through it.

Brian King

unread,
Jun 13, 2014, 6:59:39 PM6/13/14
to tas...@googlegroups.com
Mine keeps freezing up at Action 10.

Bill DeWitt

unread,
Jun 13, 2014, 7:22:05 PM6/13/14
to tas...@googlegroups.com
I was concerned about action 10. Mine passes through it but it seems a wasted step (adding a number to set a variable that is only used in the next step?). 

My problems seems to be that while the calendar is read into %calendar_results, and that gets copied into %results, when it gets to the end, %results is empty. ("You have no scheduled events"). What also seems weird is that the day seems to run from 12am to 12am instead of from now to 24 hours from now.

Bill DeWitt

unread,
Jun 13, 2014, 7:31:00 PM6/13/14
to tas...@googlegroups.com
Ah ha! I missed the comma before %calendar_results in action #19

I still think the time of day is off though.

Brian King

unread,
Jun 13, 2014, 7:50:28 PM6/13/14
to tas...@googlegroups.com
I've gotten it past action 10 but now it's using the date January 24th 158003

Baerdric

unread,
Jun 13, 2014, 7:51:58 PM6/13/14
to tas...@googlegroups.com
Did you see the period splitter in action #3?


On Fri, Jun 13, 2014 at 7:50 PM, Brian King <b.d....@gmail.com> wrote:
I've gotten it past action 10 but now it's using the date January 24th 158003

--
You received this message because you are subscribed to a topic in the Google Groups "Tasker" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tasker/8B5npeIsack/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tasker+un...@googlegroups.com.
Visit this group at http://groups.google.com/group/tasker.
For more options, visit https://groups.google.com/d/optout.

Brian King

unread,
Jun 13, 2014, 8:02:00 PM6/13/14
to tas...@googlegroups.com
What does the split in action 3 accomplish? It uses a . as the splitter but there are none in the variable

Bill DeWitt

unread,
Jun 13, 2014, 8:06:11 PM6/13/14
to tas...@googlegroups.com
The variable holds the time, which in Tasker is represented by 2 numbers for the hours, followed by a period, then two numbers for the minutes. So right now at my house it's 20.03

What that whole thing (A2-A13) seems to be doing is adding up how many seconds have passed of this day and how many are left in the day.

Bill DeWitt

unread,
Jun 13, 2014, 8:23:01 PM6/13/14
to tas...@googlegroups.com
OK, I think it's supposed to go from 12am to 12am. It figures out how many minutes have passed so it knows how many minutes to go back. Then it comes forward 15 (14) minutes at a time.


Bill DeWitt

unread,
Jun 13, 2014, 8:33:20 PM6/13/14
to tas...@googlegroups.com
Yeah, by setting %time to 00.00 instead of %TIME it reads my schedule from now until tomorrow night. Which is what I want, the next 24 hours, so I can probably take out some of these lines. Then I will have to add back in some stuff to let it announce the time of each of my appointments.

But it's working! Thanks again Brandon!

Bill DeWitt

unread,
Jun 13, 2014, 8:57:31 PM6/13/14
to tas...@googlegroups.com
Wait a minute...

... could I have just imported that description somehow?

Brandon Horwath

unread,
Jun 13, 2014, 9:08:40 PM6/13/14
to tas...@googlegroups.com
Wait a minute...

... could I have just imported that description somehow?

No, not directly. I could've exported it for you. Sorry. Glad you both got it worked out though.

I just pieced it together from a few tasks real quick. The variable management is a little weird to keep it mostly open for modification.

The project on the wiki covers a lot more for what you're asking though. Scene displayed containing events, voice specified timeframes, multi-day command processing, I think it's worth a look ;-)

Bill DeWitt

unread,
Jun 13, 2014, 9:11:02 PM6/13/14
to tas...@googlegroups.com
Where is that? The profiles on the Wiki I saw were pretty simplistic.

Brandon Horwath

unread,
Jun 13, 2014, 9:13:31 PM6/13/14
to tas...@googlegroups.com
And yes, %subtract can be modified (in the suggested task) to fit your needs ie. more accurate event recognition or shorter command processing.

I have it set at 14 minute intervals to guarentee recognition of an event lasting 15 minutes. I figure anything less is probably a 'don't care'.

Brian King

unread,
Jun 13, 2014, 9:14:23 PM6/13/14
to tas...@googlegroups.com
I found it. I used TIMES and not TIME

Brandon Horwath

unread,
Jun 13, 2014, 9:18:26 PM6/13/14
to tas...@googlegroups.com
Menu > browse examples > User Wiki > App Factory Ready - Tell'endar

... I haven't worked out individual event start and end times yet for the event announcer, but that's planned.

Baerdric

unread,
Jun 13, 2014, 9:21:00 PM6/13/14
to tas...@googlegroups.com
Ah, I didn't see that down there. I'll have to pick through it. I want to work out my own system, but I'm not shy to borrow ideas from others.


On Fri, Jun 13, 2014 at 9:18 PM, Brandon Horwath <brandon...@gmail.com> wrote:
Menu > browse examples > User Wiki > App Factory Ready - Tell'endar

... I haven't worked out individual event start and end times yet for the event announcer, but that's planned.

Lionel

unread,
Jun 20, 2014, 8:51:54 AM6/20/14
to tas...@googlegroups.com

Hi !

Trying to use this task, so I followed Brandon's hint.
I managed to tune the time frame as I wanted (from today current time to today midnight) but when I run the task it only returns the ongoing events. Can't figure out why, but one thing I don't understand it that the %minutes variable (used in A10 & ) is never set...
What does it correspond to?

Thanks for your help :)

Brandon Horwath

unread,
Jun 20, 2014, 2:19:38 PM6/20/14
to tas...@googlegroups.com
but when I run the task it only returns the ongoing events.

You want it to return events that have already ended? What are you looking for outside of 'ongoing events'? Is it not returning anything that has yet to happen in the future for the day?

Can't figure out why, but one thing I don't understand it that the %minutes variable (used in A10 & ) is never set...
What does it correspond to?

That task was pieced together from roughly four other tasks I created for a project. Since I wanted to post a description of the task easily, I combined several pre-written tasks into one in about a minute. So yes, several variables seem managed and set a little weird. That's because rather than changing all the variables I just changed one in an action to keep with pre-written flow. Also, there are a few variables created in the task flow that are not used but could be used within the scope of the project; just not within the scope of the posted task.

Sorry for the confusion.

Rz,A

unread,
Aug 10, 2014, 8:11:43 AM8/10/14
to tas...@googlegroups.com
hi Brandon
this excerpt worked very well but its reading the calendar from an old date "1969" can you help me fix that

On Friday, 13 June 2014 23:08:02 UTC+4, Brandon Horwath wrote:
Just post in a new thread Bill if the most recent is this old.

Here's a partial excerpt from a task that is an event announcer, available on the tasker user wiki. Just running this as a test should do what you want.

All Events Today (189)
        A1: Flash [ Text:Started Long:Off ]
        A2: Variable Set [ Name:%time To:%TIME Do Maths:On Append:Off ]
        A3: Variable Split [ Name:%time Splitter:. Delete Base:On ]
        A4: Variable Set [ Name:%time1 To:(23-%time1)*60 Do Maths:On Append:Off ]
        A5: Variable Set [ Name:%time2 To:60-%time2 Do Maths:On Append:Off ]
        A6: Variable Add [ Name:%time1 Value:%time2 Wrap Around:0 ]
        A7: Variable Set [ Name:%after_minutes To:%time1 Do Maths:On Append:Off ]
        A8: Variable Set [ Name:%before_minutes To:%time1 - 1441 Do Maths:On Append:Off ]
        A9: Variable Set [ Name:%minutes_end To:1440 Do Maths:Off Append:Off ]
        A10: Variable Add [ Name:%minutes Value:%before_minutes Wrap Around:0 ]
        A11: Variable Set [ Name:%calendar_check To:%minutes * 60 Do Maths:On Append:Off ]
        A12: Variable Add [ Name:%calendar_check Value:%TIMES + 60 Wrap Around:0 ]
        A13: Variable Convert [ Name:%calendar_check Function:Seconds to Long Date Time Store Result In:%calendar_begin ]
        A14: Variable Set [ Name:%subtract To:14 Do Maths:Off Append:Off ]
        A15: Flash [ Text:Analyzing Long:Off ]
        A16: Say [ Text:Analyzing Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
        <Test Anchor>
        A17: Anchor
        A18: Test [ Type:Calendar Title Data:%calendar_check Store Result In:%calendar_results ]
        A19: Variable Set [ Name:%results To:,%calendar_results() Do Maths:Off Append:On ] If [ %calendar_results(#) != 0 ]
        A20: Variable Set [ Name:%subtract To:%minutes_end Do Maths:Off Append:Off ] If [ %minutes_end < 14 ]
        A21: Variable Subtract [ Name:%minutes_end Value:%subtract ]
        A22: Variable Add [ Name:%calendar_check Value:%subtract * 60 Wrap Around:0 ]
        A23: Goto [ Type:Action Label Number:1 Label:Test Anchor ] If [ %minutes_end != 0 ]
        A24: Flash [ Text:Analysis Complete Long:Off ]
        A25: Say [ Text:Analysis complete Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
        A26: Variable Convert [ Name:%calendar_check Function:Seconds to Long Date Time Store Result In:%calendar_end ]
        A27: If [ %results Is Set ]
        A28: Variable Split [ Name:%results Splitter:, Delete Base:Off ]
        A29: Array Process [ Variable:%results Type:Remove Duplicates ]
        A30: Array Process [ Variable:%results Type:Squash ]
        A31: Array Pop [ Variable:%results Position:1 To Var: ]
        A32: If [ %results(#) = 0 ]
        A33: Say [ Text:No events from %calendar_begin until %calendar_end Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
        A34: Else
        A35: Say [ Text:According to the calendar for %calendar_begin until %calendar_end, you have %results(#) events, %results() Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:On ] If [ %SILENT ~ off ]
        A36: End If
        A37: Else
        A38: Say [ Text:No events from %calendar_begin until %calendar_end Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
        A39: End If

Hope this helps.

Rz,A

unread,
Aug 10, 2014, 8:15:04 AM8/10/14
to tas...@googlegroups.com
lionel ,
how did you tune up the time frame?
Regards

Brandon Horwath

unread,
Aug 10, 2014, 3:56:26 PM8/10/14
to tas...@googlegroups.com
Rz,A

Most likely, a variable set action doesn't have 'do maths' checked somewhere. Either that or the initial check doesn't include %TIMES as part of it.

What are you working with so far?

To export a profile/task as description:

1) Disable beginner mode.
Go to menu > preferences > UI tab > Beginner mode and uncheck it.

2) A profile/task must be named to export
Long press on the profile that you want to name and a menu bar should appear at the top of the screen.
Select the "A" icon to open a dialog to name the profile.
Note: You can change tasker's profile creation sequence to request a profile name when creating a profile with:
menu > preferences > UI > scroll down to Main Screen section and find 'Ask For New Profile Name' and check it.

For tasks in a scene, you can apply a named task in an element task by selecting the desired element and label, then the round arrow on lower left corner of the action edit screen.

3) Post the Tasker description of the profile or task that you are having trouble with.
To do that you long press on the profile name (or task name) and then go to menu > export > description to clipboard (don't select export XML). Then paste the clipboard contexts into a post.

Jeremy Harris

unread,
Aug 10, 2014, 4:56:43 PM8/10/14
to tas...@googlegroups.com
Wow...I wish I would've seen this thread last month! Glad Brandon's on it already... as expert as it gets. This may have been mentioned before, but I recommend using his Tell'endar wiki project and if necessary, modifying the Schedule Announcer task.

http://brandon-horwath.wikidot.com/voice-calendar

Using this, you can announce your schedule for ANY day...so use it in the morning for your day's schedule or check your schedule for next weekend... its an ingenuous project that Brandon has developed!

Alternatively, I had previously made the same thing using SQL... But only for current day, and no beautiful scene. Here's that method...Root required:

Say Schedule (15)
A1: Run Shell [ Command:su
sqlite3 /data/data/com.android.providers.calendar/databases/calendar.db
SELECT Calendars.calendar_displayName, datetime(Instances.begin/1000, 'unixepoch', 'localtime'), Events.title FROM Calendars, Instances, Events WHERE Instances.event_id = Events._id AND date(datetime(begin/1000 , 'unixepoch', 'localtime')) = date('now', 'localtime') AND Events.calendar_id = Calendars._id ORDER BY Instances.begin ASC; Timeout (Seconds):0 Use Root:On Store Output In:%SchedOutput Store Errors In:%SchedError Store Result In:%SchedResult ]
A2: Write File [ File:SchedSQL Text:%SchedOutput Append:Off Add Newline:On ]
A3: Read File [ File:SchedSQL To Var:%scheduletext ]
A4: Variable Set [ Name:%NewLine To:


Do Maths:Off Append:Off ]

A5: Variable Set [ Name:%Space To: Do Maths:Off Append:Off ]
A6: Variable Split [ Name:%scheduletext Splitter:%NewLine Delete Base:Off ]
A7: AutoVoice Continuous [ Configuration:
Stopping continuous voice recognition Package:com.joaomgcd.autovoice Name:AutoVoice Continuous Timeout (Seconds):0 ]
A8: Media Volume [ Level:15 Display:Off Sound:Off ]
A9: Say [ Text:Hello Jeremy, here is your schedule today. Engine:Voice:com.ivona.tts:eng-GBR Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ]
A10: For [ Variable:%scheduleevents Items:%scheduletext() ]
A11: Variable Split [ Name:%scheduleevents Splitter:| Delete Base:Off ]
A12: Variable Split [ Name:%scheduleevents2 Splitter:%Space Delete Base:Off ]
A13: Say [ Text:%scheduleevents22 %scheduleevents3 Engine:Voice:default:default Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ]
A14: [X] Perform Task [ Name:SPEECH Task Pauser Priority:%priority + 1 Parameter 1 (%par1):%scheduleevents22 %scheduleevents3 Parameter 2 (%par2): Return Value Variable: Stop:Off ]
A15: End For
A16: Delete File [ File:SchedSQL Shred Level:0 Use Root:On ]
A17: AutoVoice Continuous [ Configuration:
Starting continuous voice recognition without headset
Persistent Notification: true Package:com.joaomgcd.autovoice Name:AutoVoice Continuous Timeout (Seconds):0 ]

Rz,A

unread,
Aug 11, 2014, 12:23:18 AM8/11/14
to tas...@googlegroups.com
Brandon,
First thank you for the help and for the fast response.
This is the profile
Calender Announcer (123)

A1: Flash [ Text:Started Long:Off ]
A2: Variable Set [ Name:%time To:%TIME Do Maths:On Append:Off ]
A3: Variable Split [ Name:%time Splitter:. Delete Base:On ]
A4: Variable Set [ Name:%time1 To:(23-%time1) *60 Do Maths:On Append:Off ]
A5: Variable Set [ Name:%time2 To:60-%time2 Do Maths:On Append:Off ]
A6: Variable Add [ Name:%time1 Value:%time2 Wrap Around:0 ]
A7: Variable Set [ Name:%after_minutes To:%time1 Do Maths:On Append:Off ]
A8: Variable Set [ Name:%before_minutes To:%time1 - 1441 Do Maths:On Append:Off ]
A9: Variable Set [ Name:%minutes_end To:1440 Do Maths:Off Append:Off ]
A10: Variable Add [ Name:%minutes Value:%before_minutes Wrap Around:0 ]
A11: Variable Set [ Name:%calendar_check To:%minutes * 60 Do Maths:On Append:Off ]
A12: Variable Add [ Name:%calendar_check Value:%TIME + 60 Wrap Around:0 ]
A13: Variable Convert [ Name:%calendar_check Function:Seconds to Long Date Time Store Result In:%calendar_begin ]
A14: Variable Set [ Name:%subtract To:14 Do Maths:Off Append:Off ]
A15: Flash [ Text:Analyzing Long:Off ]
A16: Say [ Text:Analyzing Engine:Voice:com.google.android.tts:eng-gbr Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
<Test anchor>
A17: Anchor
A18: Test File [ Type:Parent Dir Data:%calendar_check Store Result In:%calendar_results ]
A19: Variable Set [ Name:%results To:, %calendar_results() Do Maths:Off Append:On ] If [ %calendar_results (#)! eq 0 ]

A20: Variable Set [ Name:%subtract To:%minutes_end Do Maths:Off Append:Off ] If [ %minutes_end < 14 ]
A21: Variable Subtract [ Name:%minutes_end Value:%subtract ]
A22: Variable Add [ Name:%calendar_check Value:%subtract * 60 Wrap Around:0 ]
<Test Anchor>
A23: Goto [ Type:Action Number Number:1 Label: ] If [ %minutes_end ! eq 0 ]

A24: Flash [ Text:Analysis Complete Long:Off ]
A25: Say [ Text:Analysis Complete Engine:Voice:com.google.android.tts:eng-gbr Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]

A26: Variable Convert [ Name:%calendar_check Function:Seconds to Long Date Time Store Result In:%calendar_end ]
A27: If [ %results Set ]

A28: Variable Split [ Name:%results Splitter:, Delete Base:Off ]
A29: Array Process [ Variable:%results Type:Remove Duplicates ]
A30: Array Process [ Variable:%results Type:Squash ]
A31: Array Pop [ Variable:%results Position:1 To Var: ]
A32: If [ %results(#) eq 0 ]
A33: Say [ Text:No events from %calendar_begin until %calendar_end Engine:Voice:com.google.android.tts:eng-gbr Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
A34: Else
A35: Say [ Text:According to the calendar for %calendar_begin until %calendar_end, you have %results(#) events, %results() Engine:Voice:com.google.android.tts:eng-gbr Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:On ] If [ %SILENT ~ off ]

A36: End If
A37: Else
A38: Say [ Text:No events from %calendar_begin until %calendar_end Engine:Voice:com.google.android.tts:eng-gbr Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
A39: End If

Brandon Horwath

unread,
Aug 11, 2014, 1:43:49 AM8/11/14
to tas...@googlegroups.com
Couple things pop out at me:

A12 should be %TIMES not %TIME

A18 is testing files, instead of calendar titles

Brandon Horwath

unread,
Aug 11, 2014, 1:46:56 AM8/11/14
to tas...@googlegroups.com
A19 should look like:

A19: Variable Set [ Name:%results To:,%calendar_results() Do Maths:Off Append:On ] If [ %calendar_results(#) != 0 ]

Notice the If %calendar_results(#)

Not %calendar_results (#) (that has a space, remove it)

Brandon Horwath

unread,
Aug 11, 2014, 1:49:53 AM8/11/14
to tas...@googlegroups.com
A23 needs to be:

A23: Goto [ Type:Action Label Number:1 Label:Test Anchor ] If [ %minutes_end != 0 ]

So, set goto label: Test Anchor and importantly remove the label that is associated with this action in your task. You only want one action with a label 'Test Anchor', not this action.

Rz,A

unread,
Aug 11, 2014, 4:30:15 AM8/11/14
to tas...@googlegroups.com
what do you mean by testing files ? excuse me i am still a beginner at this

Rz,A

unread,
Aug 11, 2014, 4:39:37 AM8/11/14
to tas...@googlegroups.com
Brandon the profile analyzed and worked but this time it listed tasks from 12 am to 12:14am monday 

Brandon Horwath

unread,
Aug 11, 2014, 5:28:51 AM8/11/14
to tas...@googlegroups.com
Make sure the label in the anchor and the goto action label defined match exactly, it is case sensitive.

Sounds like it didn't run it's loop.

Post your created task if you still are having difficulty.

GJD

unread,
Aug 11, 2014, 5:44:38 AM8/11/14
to tas...@googlegroups.com
I see this threat now. And i already had an implementation build for this. To send the list of today's appointments to my smartwatch every day.

Here is my implementation for getting the calendar items for today. This code takes a couple of seconds to complete. And this is why i don't yet implement for the next 7 days.

Main Calendar Entries For Today (16)
A1: Variable Clear [ Name:%Main_Calendar_Today Pattern Matching:Off ]
A2: Variable Set [ Name:%resultcount To:0 Do Maths:Off Append:Off ]
A3: Variable Set [ Name:%day To:%DATE Do Maths:Off Append:Off ]
A4: Variable Set [ Name:%datetime To:%DATE 00.01 Do Maths:Off Append:Off ]
A5: Variable Convert [ Name:%datetime Function:Date Time to Seconds Store Result In:%timeloop ]
A6: Variable Section [ Name:%day From:1 Length:2 Adapt To Fit:Off Store Result In: ]
A7: Variable Set [ Name:%dayloop To:%day Do Maths:Off Append:Off ]
A8: Test App [ Type:Calendar All Day Data:%TIMES Store Result In:%alldays ]
A9: Variable Set [ Name:%alldayscount To:%alldays(#) Do Maths:Off Append:Off ]
A10: [X] Flash [ Text:%alldayscount Long:Off ]
A11: If [ %alldayscount > 0 ]
A12: Test App [ Type:Calendar Title Data:%timeloop Store Result In:%entries ]
A13: Test App [ Type:Calendar Available Data:%timeloop Store Result In:%calendars ]
A14: For [ Variable:%index Items:1:%alldayscount ]
A15: Variable Set [ Name:%calendaravailable To:%calendars(%index) Do Maths:Off Append:Off ]
A16: [X] Flash [ Text:%entries(%index)
%calendaravailable Long:Off ]
A17: [X] If [ %calendaravailable ~ yes ]
A18: Variable Add [ Name:%resultcount Value:1 Wrap Around:0 ]
A19: Variable Set [ Name:%result To:

00:00 %entries(%index) Do Maths:Off Append:On ]
A20: [X] End If
A21: End For
A22: End If
<Loop>
A23: If [ %day ~ %dayloop ]
A24: Test App [ Type:Calendar Title Data:%timeloop Store Result In:%entries ]
A25: Variable Set [ Name:%count To:%entries(#) Do Maths:Off Append:Off ]
A26: If [ %count > %alldayscount ]
A27: Test App [ Type:Calendar Start (Seconds) Data:%timeloop Store Result In:%starttimes ]
A28: Test App [ Type:Calendar End (Seconds) Data:%timeloop Store Result In:%endtimes ]
A29: Test App [ Type:Calendar Available Data:%timeloop Store Result In:%calendars ]
A30: Variable Set [ Name:%forend To:%count-%alldayscount Do Maths:On Append:Off ]
A31: For [ Variable:%index Items:1:%forend ]
A32: Variable Set [ Name:%calendaravailable To:%calendars(%index) Do Maths:Off Append:Off ]
A33: [X] If [ %calendaravailable ~ yes ]
A34: Variable Add [ Name:%resultcount Value:1 Wrap Around:0 ]
A35: Variable Convert [ Name:%starttimes(%index) Function:Seconds to Date Time Store Result In:%time ]
A36: Variable Section [ Name:%time From:12 Length:5 Adapt To Fit:Off Store Result In: ]
A37: Variable Convert [ Name:%timeloop Function:Seconds to Date Time Store Result In:%temp ]
A38: Variable Set [ Name:%entry To:%entries(%index) Do Maths:Off Append:Off ]
A39: Variable Set [ Name:%point To:. Do Maths:Off Append:Off ]
A40: Variable Split [ Name:%time Splitter:%point Delete Base:Off ]
A41: Variable Set [ Name:%time To:%time1:%time2 Do Maths:Off Append:Off ]
A42: Variable Set [ Name:%result To:

%time %entry Do Maths:Off Append:On ]
A43: [X] End If
A44: End For
A45: Variable Set [ Name:%timeloop To:%endtimes(%count) Do Maths:Off Append:Off ]
A46: End If
A47: Variable Set [ Name:%timeloop To:%timeloop+(60*20) Do Maths:On Append:Off ]
A48: Variable Convert [ Name:%timeloop Function:Seconds to Date Time Store Result In:%dayloop ]
A49: Variable Section [ Name:%dayloop From:1 Length:2 Adapt To Fit:Off Store Result In: ]
A50: Goto [ Type:Action Label Number:1 Label:Loop ]
A51: End If
A52: Variable Set [ Name:%date To:%DATE Do Maths:Off Append:Off ]
A53: Variable Search Replace [ Variable:%date Search:- Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In:%date Replace Matches:On Replace With:/ ]
A54: If [ %result Set ]
A55: Variable Set [ Name:%result To:%resultcount calendar items for today (%date): %result Do Maths:Off Append:Off ]
A56: Else
A57: Variable Set [ Name:%result To:No calendar items for today (%date).  Do Maths:Off Append:Off ]
A58: End If
A59: [X] Flash [ Text:%result Long:Off ]
A60: Variable Set [ Name:%Main_Calendar_Today To:%result Do Maths:Off Append:Off ]


Rz,A

unread,
Aug 11, 2014, 5:48:37 AM8/11/14
to tas...@googlegroups.com
Calender Announcer (123)
A1: Flash [ Text:Started Long:Off ]
A2: Variable Set [ Name:%time To:%TIME Do Maths:On Append:Off ]
A3: Variable Split [ Name:%time Splitter:. Delete Base:On ]
A4: Variable Set [ Name:%time1 To:(23-%time1) *60 Do Maths:On Append:Off ]
A5: Variable Set [ Name:%time2 To:60-%time2 Do Maths:On Append:Off ]
A6: Variable Add [ Name:%time1 Value:%time2 Wrap Around:0 ]
A7: Variable Set [ Name:%after_minutes To:%time1 Do Maths:On Append:Off ]
A8: Variable Set [ Name:%before_minutes To:%time1 - 1441 Do Maths:On Append:Off ]
A9: Variable Set [ Name:%minutes_end To:1440 Do Maths:Off Append:Off ]
A10: Variable Add [ Name:%minutes Value:%before_minutes Wrap Around:0 ]
A11: Variable Set [ Name:%calendar_check To:%minutes * 60 Do Maths:On Append:Off ]
A12: Variable Add [ Name:%calendar_check Value:%TIMES + 60 Wrap Around:0 ]
A13: Variable Convert [ Name:%calendar_check Function:Seconds to Long Date Time Store Result In:%calendar_begin ]
A14: Variable Set [ Name:%subtract To:14 Do Maths:Off Append:Off ]
A15: Flash [ Text:Analyzing Long:Off ]
A16: Say [ Text:Analyzing Engine:Voice:com.google.android.tts:eng-gbr Stream:3 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:Off ] If [ %SILENT ~ off ]
<Test anchor>
A17: Anchor
A18: Test File [ Type:Parent Dir Data:%calendar_check Store Result In:%calendar_results ]
A19: Variable Set [ Name:%results To:, %calendar_results() Do Maths:Off Append:On ] If [ %calendar_results(#)! eq 0 ]

A20: Variable Set [ Name:%subtract To:%minutes_end Do Maths:Off Append:Off ] If [ %minutes_end < 14 ]
A21: Variable Subtract [ Name:%minutes_end Value:%subtract ]
A22: Variable Add [ Name:%calendar_check Value:%subtract * 60 Wrap Around:0 ]
<Test Anchor>
A23: Goto [ Type:Action Label Number:1 Label:1 ] If [ %minutes_end ! eq 0 ]

Brandon Horwath

unread,
Aug 11, 2014, 2:06:43 PM8/11/14
to tas...@googlegroups.com
<Test Anchor>
A23: Goto [ Type:Action Label Number:1 Label:1 ] If [ %minutes_end ! eq 0 ]

Still incorrect.

If I have a chance today I'll just upload the task myself for others to import.

Rz,A

unread,
Aug 11, 2014, 4:57:48 PM8/11/14
to tas...@googlegroups.com
Thank you very much for your help.

Brandon Horwath

unread,
Aug 11, 2014, 5:45:33 PM8/11/14
to tas...@googlegroups.com

Rz,A

unread,
Aug 12, 2014, 3:06:29 AM8/12/14
to tas...@googlegroups.com
Thank you man thank you very much , I really appreciate the help it worked  

Brandon Horwath

unread,
Aug 12, 2014, 3:14:20 AM8/12/14
to tas...@googlegroups.com
Anytime. Glad it worked ;-)

Richard Wallace

unread,
Aug 12, 2014, 6:01:59 AM8/12/14
to tas...@googlegroups.com
 
 tried to download this and import it, but it doesnt work. It fails to import
 
Error toast message says failed to import profile data?

On Friday, 13 June 2014 22:14:47 UTC+1, Brandon Horwath wrote:
I've spent too much time working on calendar integration

Then, don't waste anymore:
http://brandon-horwath.wikidot.com/voice-calendar

Richard Wallace

unread,
Aug 12, 2014, 6:09:22 AM8/12/14
to tas...@googlegroups.com
Could you upload the xml file of this so we can imprt to tasker???

Brandon Horwath

unread,
Aug 12, 2014, 6:17:00 AM8/12/14
to tas...@googlegroups.com
Richard,

The link is for a project. It requires import into a project tab.

Did you try that?

If you don't know how to create a project tab, here's how:

https://www.dropbox.com/s/ji3ca91g0gygql5/Tasker%204.0%2B%20Creating%20a%20Project.png

Then, press the tab and select import from the popup menu.

Navigate around and make sure the file name is just Tell_endar.prj.xml and doesn't have a (#) in it. If it does, edit the file name to remove the (#), then try importing.

If you're still having difficulty, post back.

GJD

unread,
Aug 12, 2014, 6:33:37 AM8/12/14
to tas...@googlegroups.com

Rich Belthoff

unread,
Aug 12, 2014, 6:47:08 AM8/12/14
to tas...@googlegroups.com
Brandon,

I tried to import the your calendar project into a new project and received and error that the Variable Query scene exits already. That scene exists in another one of my projects but not the new project I created for your calendar project. What can I do to fix this issue? Thanks!

-Rich

Tobias Hau

unread,
Aug 12, 2014, 6:56:43 AM8/12/14
to tas...@googlegroups.com


Am Dienstag, 12. August 2014 12:33:37 UTC+2 schrieb GJD:
You can download it from here.
https://docs.google.com/file/d/0BzXlvjtmzrL0Z0ZhQ2s1cDdSaGs/edit?usp=docslist_api

Great Thx! But it seems there is an problem. I import it and get 5 of 6 items for today and two of it shows %entries3 and %entries4? 

Richard Wallace

unread,
Aug 12, 2014, 7:32:55 AM8/12/14
to tas...@googlegroups.com
 
Hi Brandon,
 
Thanks, yeah this is what i tried and still get an error..."failed to import profile date"

GJD

unread,
Aug 12, 2014, 8:02:38 AM8/12/14
to tas...@googlegroups.com
OK, with my code i expirenced a couple of issues. It depends how many calendars you have and if you have all day events or not.
Even if the calendars are not enabled in your agenda app, they will been seen in Tasker.

So, a couple of questions for you...
For today, how many items are there, how many all day, how many on a specific time?

I loop through the day starting at 00:01 for every 20 minutes.
First i check for the all day items for 00:01.
Then i start looping.
When i find an item, i start looping again from 20min after the END time. So for overlapping items could be missed for this. You can recode this yourself if you want.

Try add some flash commands to check the in between results.
My self have no issues. But my calendar is most of the time empty. No double appointments, unless for all day events. I have 2 calendars, but only one i use.


Op dinsdag 12 augustus 2014 12:56:43 UTC+2 schreef Tobias Hau:

Rich Belthoff

unread,
Aug 12, 2014, 8:22:18 AM8/12/14
to tas...@googlegroups.com
Brandon,

When I import your calendar project into a new project, I get an error that the Variable Query scene already exists. I use a variable query in about 5 other tasks. However, they are all in a different project. What can I do about this?

Thanks.

P.S. I tried to post a reply earlier but I don't see it so I'm trying again. I hope both don't appear. ;-)

-Rich

Brandon Horwath

unread,
Aug 12, 2014, 5:25:52 PM8/12/14
to tas...@googlegroups.com
When I import your calendar project into a new project, I get an error that the Variable Query scene already exists. I use a variable query in about 5 other tasks. However, they are all in a different project. What can I do about this?

That's weird. I've never heard anything about that. There is a single variable query action, used from a checkbox on 'Options Main' scene.

Can you post a screenshot of the resulting error?

Maybe another user can shed some light on the cause?

Could it be because of similar or duplicate task or scene names?

That's puzzling...

Sean Williams

unread,
Aug 12, 2014, 6:21:13 PM8/12/14
to tas...@googlegroups.com
I've come across the Variable Query import issue before. Guess its because of a duplicated name. You can open up the XML in a text editor and search & replace 'Variable Query' essentially renaming the scene.

Bob Hansen

unread,
Aug 12, 2014, 6:25:08 PM8/12/14
to tas...@googlegroups.com
Hi Brandon,

Tasker includes a scene called Variable Query as part of the install. It is used for the Variable Query action.

I ran into the same problem when I imported the project.

Any chance of you renaming your Variable Query scene? I think you could do a variable search of the exported xml file for "Variable Query" and replace with say "Cal Variable Query" or something; Import the modified project into Tasker and it would solve the problem.

Brandon Horwath

unread,
Aug 12, 2014, 8:26:37 PM8/12/14
to tas...@googlegroups.com
Certainly! Nothing would make me happier than resolving these import issues :-) I had no idea!

Any chance of you renaming your Variable Query scene?

:-(

That's just it... I don't have a 'scene' that does that. I have a task that uses a 'variable query' action, as part of a scene. But, that scene is called, 'Options Main' and I can try renaming all tasks and scenes to something completely unique... but, I don't have a 'variable query scene' in the scenes tab itself.

Since the action for 'variable query' is standard, and does display a standard scene... I'm not certain I can apply a unique name to the 'scene' displayed by simply testing the action?

Maybe, I'm missing something that should be obvious? Let me check the 'variable query' action and see if so...

... but, I don't have a 'variable query scene' in the scenes tab for the project.

:-(

Bob Hansen

unread,
Aug 12, 2014, 8:42:23 PM8/12/14
to tas...@googlegroups.com
Looking at the project xml file it is clear that the Variable Query scene is included in the export. Apparently, Tasker exports all referenced scenes which makes sense when you think about it.

My suggestion, then, is to clone, the Variable Query scene and rename it. Then reference the renamed variable query scene. As I suggested before, it might be easiest to do a search for "Variable Query" and replace with "Var Query".

I will test this out and see if it works and let you know the results.

Bob Hansen

unread,
Aug 12, 2014, 8:56:52 PM8/12/14
to tas...@googlegroups.com
I did a search for "Variable Query" and replace with "Var Query" replacing all matches using a text editor.
I saved the file and imported into Tasker which already had a Variable Query scene without and problem.
I checked the project tab and found a new scene Var Query as expected. Ran one of the tasks that called this scene and it ran correctly.

Conclusion is that the variable search and replace of the project resolved the issue.

Hope that helps :-)

That's an amazing project by the way!

Brandon Horwath

unread,
Aug 12, 2014, 8:59:56 PM8/12/14
to tas...@googlegroups.com
Bob,

I follow your meaning, and did search tasker for 'Variable Query'. The only result that displayed for the project, was this task:

Default Time Query (618)
A1: If [ %Default_time !Set ]
A2: Say [ Text:Please enter number of minutes an event should last if no end time is specified with a start time Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:On ] If [ %SILENT ~ off ]
A3: Flash [ Text:Enter default end time (in minutes) Long:Off ]
A4: Variable Query [ Title: Variable:%Default_time Input Type:Numeric / Integer Default: Background Image: Layout:Variable Query Timeout (Seconds):600 Show Over Keyguard:On ] If [ %Default_time !Set ]
A5: Goto [ Type:Action Label Number:1 Label:End task ] If [ %Default_time !Set ]
A6: Else
A7: Say [ Text:Please enter number of minutes an event should last if no end time is specified with a start time Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:On ] If [ %SILENT ~ off ]
A8: Flash [ Text:Enter default end time (in minutes) Long:Off ]
A9: Variable Query [ Title: Variable:%Default_time Input Type:Numeric / Integer Default:%Default_time Background Image: Layout:Variable Query Timeout (Seconds):600 Show Over Keyguard:On ] If [ %Default_time Set ]
A10: Goto [ Type:Action Label Number:1 Label:End task ] If [ %Default_time !Set ]
A11: End If
A12: Variable Clear [ Name:%Default_time Pattern Matching:Off ] If [ %Default_time !~R \d+|\d ]
A13: Variable Search Replace [ Variable:%Default_time Search:\d+|\d Ignore Case:Off Multi-Line:Off One Match Only:Off Store Matches In:%result Replace Matches:Off Replace With: ] If [ %Default_time Set ]
A14: If [ %result() !~R , & %result(#) != 0 ]
A15: Variable Set [ Name:%Default_time To:%result() minutes Do Maths:Off Append:Off ] If [ %Default_time ~R \d+|\d ]
A16: Else If [ %result() ~R , ]
A17: Flash [ Text:Error! %result() minutes? Long:Off ]
A18: Variable Clear [ Name:%Default_time Pattern Matching:Off ]
A19: Goto [ Type:Action Number Number:1 Label: ]
A20: End If
<End task>
A21: Anchor
A22: Variable Clear [ Name:%Default_time Pattern Matching:Off ] If [ %Default_time ~ 0 minutes ]
A23: Say [ Text:%Default_time set Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Network:Off Continue Task Immediately:On ] If [ %SILENT ~ off & %Default_time Set ]
A24: Flash [ Text:%Default_time set Long:On ] If [ %Default_time Set ]
A25: Flash [ Text:No default end time set Long:On ] If [ %Default_time !Set ]

You will note, this task doesn't use a 'show scene' action, and 'variable query' is not an actual scene.

Are you saying, since no 'title' is defined for the action > variable query, that tasker detects other 'unnamed' action > variable query 'scenes' exist in other projects?

To be honest, I'm very curious about what you find.

I'm at a total loss trying to understand what needs to be 'named' or 'renamed' and then 'referenced' since... well, there's no actual scene for it in the scenes tab.

Is this like when importing an unnamed task results in error (not possible)?

I thought I knew tasker fairly well, but this is confusing to me.

Robert Hansen

unread,
Aug 12, 2014, 9:03:13 PM8/12/14
to tas...@googlegroups.com
The variable query action, by default, references the Variable Query scene. If you tap the scene preview on the variable query action edit screen you will find that it is set to the Variable Query scene.



--
You received this message because you are subscribed to the Google Groups "Tasker" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tasker+un...@googlegroups.com.
Visit this group at http://groups.google.com/group/tasker.
For more options, visit https://groups.google.com/d/optout.

Brandon Horwath

unread,
Aug 12, 2014, 9:04:47 PM8/12/14
to tas...@googlegroups.com
I did a search for "Variable Query" and replace with "Var Query" replacing all matches using a text editor.
I saved the file and imported into Tasker which already had a Variable Query scene without and problem.
I checked the project tab and found a new scene Var Query as expected. Ran one of the tasks that called this scene and it ran correctly.

If I follow what you're saying, then the issue is with the exported xml version of the project?

I'm curious now, if I wipe the project and try to import if I will have the same issue...

... might have to try that later.

Bob Hansen

unread,
Aug 12, 2014, 9:05:06 PM8/12/14
to tas...@googlegroups.com
I should add, I didn't even realize that there was a scene selection for the variable query action until a 2 minutes ago :-)

Brandon Horwath

unread,
Aug 12, 2014, 9:07:37 PM8/12/14
to tas...@googlegroups.com
The variable query action, by default, references the Variable Query scene. If you tap the scene preview on the variable query action edit screen you will find that it is set to the Variable Query scene.

Would this suggest, or imply, any user importing a task/profile/project with a variable query action when one already exists on their device will run into this issue?

If so, wouldn't that suggest a bug?

Bob Hansen

unread,
Aug 12, 2014, 9:12:28 PM8/12/14
to tas...@googlegroups.com
Well, "bug" is such a harsh term, perhaps an "unexpected limitation"... 

It is certainly and inconvience! Ok, it's a bug. 

I have run into similar instances before.

Scott Miller

unread,
Aug 12, 2014, 9:18:03 PM8/12/14
to tas...@googlegroups.com

I believe this is similar to other built in structures within Tasker, like the pop-up, that automatically are created when needed because the action requires it, and also recreated if deleted. I would suggest that once aware of this behavior, it would be best, as suggested, to clone the scene to a new name before exporting. This probably has been around a long time, from well before people started exporting projects and kid apps  to be shared. There is probably some obscure documentation about it somewhere that has been overlooked. Perhaps Pent will chime in with his opinion eventually.

Scott

Baerdric

unread,
Aug 12, 2014, 9:21:22 PM8/12/14
to tas...@googlegroups.com
Since there is so much conversation on this thread, I wonder if I can ask if everyone is having the same dissatisfaction with the "convert to long date time" when it gets sent to speech. The numbers run together for the year and the time. I was going to work on parsing the string and reformatting it for Say, unless someone else has a better fix.


--
You received this message because you are subscribed to a topic in the Google Groups "Tasker" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/tasker/8B5npeIsack/unsubscribe.
To unsubscribe from this group and all its topics, send an email to tasker+un...@googlegroups.com.

Brandon Horwath

unread,
Aug 12, 2014, 9:42:12 PM8/12/14
to tas...@googlegroups.com
I'm hoping Pent would be able to provide some insight as well.

I would suggest that once aware of this behavior, it would be best, as suggested, to clone the scene to a new name before exporting.

I would like to calmly emphasize, there is no scene in the scenes tab that was renamed for Bob's experience with success.

It would appear, the only way to effectively rename the 'scene' that has the issue is through use of a text editor? Am I correct there?

There is no way to resolve the importation issue only using tasker itself?

To me, it appears the issue is with duplicate 'tasker made' 'scenes' being referenced? So, the work around involves altering the 'packaged' tasker made standard variable query 'scene' to duplicate it with another name that doesn't cause the 'conflict'?

I'm curious, if all referenced scenes are included in the export, why did the scene only appear as included after a change was made?

I think, before I dive to deeply into it I'll wait and see if Pent has any input either way.

I really, really appreciate everyone's efforts regarding this. Thanks again!

Apologies for the importation issues, and my lack of comprehension.

Scott Miller

unread,
Aug 12, 2014, 9:58:36 PM8/12/14
to tas...@googlegroups.com

I just added a variable query to a test task, in my test project tab. There is no variable query scene in the scenes tab of that project. However, going back to the home project, a variable query scene was indeed created that did not exist prior this. I did not create it.

Scott

Brandon Horwath

unread,
Aug 12, 2014, 10:23:22 PM8/12/14
to tas...@googlegroups.com
Since there is so much conversation on this thread, I wonder if I can ask if everyone is having the same dissatisfaction with the "convert to long date time" when it gets sent to speech.

I did with Google TTS engine, but when I switched to Acaplea TTS that engine translates all included text and grammatical syntax exceptionally well.

I found it will take something like 1/1/2011 and say "January 1st, two-thousand eleven". The app itself even has options like, 'full text analyzer', 'import/export dictionary', 'deactivate '/' (slash) pronunciation... etc.

Otherwise, yes... you'll need some other way to parse out the intended speech.

Brandon Horwath

unread,
Aug 12, 2014, 10:28:19 PM8/12/14
to tas...@googlegroups.com
However, going back to the home project, a variable query scene was indeed created that did not exist prior this.

... would you look at that!?!

This scene is what is failing to import into the base project tab since one already exists for some users?

Rich Belthoff

unread,
Aug 12, 2014, 11:07:30 PM8/12/14
to tas...@googlegroups.com
Brandon,

Thanks for the reply. I haven't been online for little while and there were 18 new posts. Anyway, seeing that you and others are hunting down this issue, I don't think I need to post a screen shot but if you still need one, let me know. Thanks.

Brandon Horwath

unread,
Aug 12, 2014, 11:13:28 PM8/12/14
to tas...@googlegroups.com
Rich,

No screenshot needed. I think we have identified the culprit.

When I have an opportunity I'll play around with the variable query scene issue, and see if I can upload a modified version that (hopefully) will import for all users.

In the meanwhile, I'm curious if renaming the existing variable query scene on a target device in the base project then allows for the project to import successfully?

I suspect it would.

Either way, I am really curious about what Pent would recommend, or suggest.

Unfortunately, this seems it would be a fairly common issue with avid tasker users. :-(

Brandon Horwath

unread,
Aug 13, 2014, 2:39:24 AM8/13/14
to tas...@googlegroups.com
Here is the project with the modifications that should fix the importation issue.

https://www.dropbox.com/s/lxab19flig1ioom/Tell_endar.prj.xml

(I will fix the file uploaded on the wiki shortly)

Note: if a previous version already exists in a user's download folder, the new version downloaded will have an invalid file association (with a (#), such as (1) or (2)) that needs to be manually removed from the file name for importation to work properly.

I'm hoping this resolves the importation issues for users that already have a pre-existing 'variable query scene' within tasker on their device...
... but, let me know.

Brandon Horwath

unread,
Aug 13, 2014, 3:09:22 AM8/13/14
to tas...@googlegroups.com
Also, I appreciate the guided assistance troubleshooting the cause and implementing a solution.

I didn't go through and edit the xml. Based on what was communicated, going through the variable query action itself (I think) fixed the problem.

The 'layout' for the variable query action used a name that already existed if a user had that action in tasker. The user could use the same 'layout' for different variable query actions, since it was calling the same 'scene' as the 'layout'. The 'layout' was then included in the export as a 'scene', but was created in the base project tab initially. However, the problem occurs when users already have this tasker generated scene in the base project and attempt to import.

As was mentioned, cloning and renaming the scene (also moved to correct project), then changing the referenced 'layout' in the variable query action (I hope) resolved the problem.

Thanks again!!!

As a note, it is tough to determine if this is a bug or not. If anything, having the scene viewable upon creation in the proper project tab might help users recognize a 'generic' scene with a 'default title' is created as result... except the same problem happens when the same scene is used as a layout for an action in a different project.

Guess it's really more one of those things users have to learn. Thanks for the help fellas.

Richard Wallace

unread,
Aug 13, 2014, 8:14:54 AM8/13/14
to tas...@googlegroups.com
I still cant import the profile?!
Get the same error message as before

technogeezer

unread,
Aug 13, 2014, 8:41:56 AM8/13/14
to tas...@googlegroups.com
Thanks for your outstanding effort, Brandon!  I downloaded the Tell_endar project out of curiosity since I already have my own calendar reader and WOW - yours appears to beat mine "all day long"!

Unfortunately, I am having difficulty.  Perhaps I misunderstood this thread but is this project a calendar reader or an event generator?

I had to rename my existing calendar profile/task first but after that, the import proceeded without error.  I put a shortcut on my screen.  When I tapped the shortcut, the select calendars screen shows.  I selected the calendars and then...?  What is supposed to happen next?  There are no other controls visible.  The back key does not work.

I can see 'settings' in the drop down menu so I select that and select help but there's nothing there to explain how to actually use the project.

I'm almost willing to bet money some setting on my phone is causing the problem.

In any case, from the tasks/actions I've seen this looks like a fantastic effort.  You are very, very kind to have spent all of that time and effort and then give your work away for free.

Thanks

technogeezer

unread,
Aug 13, 2014, 9:46:08 AM8/13/14
to tas...@googlegroups.com
I spoke a bit too soon.  Upon inspecting the tasks, I find that the problem may be in the 'Select Calendar' scene.  The 'Save & Exit Selection Border' button has no tap action(s).  Also, there is no text displayed in the button itself.

HTH

Rich Belthoff

unread,
Aug 13, 2014, 11:07:10 AM8/13/14
to tas...@googlegroups.com
It imported with no issues. Now I have to figure how how to use it. ;-). Thanks!

Jeremy Harris

unread,
Aug 13, 2014, 11:17:00 AM8/13/14
to tas...@googlegroups.com

When I tapped the shortcut, the select calendars screen shows.  I selected the calendars and then...?  What is supposed to happen next?  There are no other controls visible.

The beauty of Tell'endar is that there's no need for a displayed UI. :-)

If you click on the icon again and say "Help" you'll see some pretty detailed instructions.

You can say:

"Next Friday from 3 to 5 go to the doctor's" and an event will be created in your calendar (plus lots of other goodies that you'll discover, if interested.

"What's my schedule tomorrow?" Will announce and display your events for the requested time frame.

"Am I busy/available on Sunday afternoon?" Will announce whether you're busy or not.

The project is absolutely wonderful. I've been using and testing it for months, and I am absolutely amazed by how well it works, how amazing tasker is to be able to create it, and the dedication Brandon has for making it!

technogeezer

unread,
Aug 13, 2014, 2:06:18 PM8/13/14
to tas...@googlegroups.com

The beauty of Tell'endar is that there's no need for a displayed UI. :-)


I appreciate your trying to help but apparently the project won't run correctly on my phone.  The select calender screen appears but never goes away.  There are no buttons or other controls on the screen.  There is a menu which contains only 'settings'.  Nothing I do causes the scene to disappear.

Looking at the 'Calendar' task I see an action that 'shows' the 'Select Calendar' screen.  The 'Select Calendar' screen has two entities, one is the scrolling calendar selector, which seems to work.  The other entity is a button with no image or text.  I looked at the UI tab for this button and its name is 'Save & Exit Selection Border'.  I looked at the tap, long tap and stroke tabs and each contains nothing.

 

If you click on the icon again and say "Help" you'll see some pretty detailed instructions.


I said "Help" (and a few other things) but nothing ever happens.   I was able to see the help via the menu's 'settings' entry.


Thanks anyway

Jeremy Harris

unread,
Aug 13, 2014, 2:45:17 PM8/13/14
to tas...@googlegroups.com

The 'Select Calendar' screen has two entities, one is the scrolling calendar selector, which seems to work.  The other entity is a button with no image or text.  I looked at the UI tab for this button and its name is 'Save & Exit Selection Border'.  I looked at the tap, long tap and stroke tabs and each contains nothing.

Ahh...I recall having the same issue on an older version. He should be able to fix that for you... The Save & Exit Button is supposed to appear right after you select at least one calendar.

I said "Help" (and a few other things) but nothing ever happens.   I was able to see the help via the menu's 'settings' entry.

Yeah, if % Cal_selected is not set then the Calendar task won't proceed to anything beyond that.

I'm sure he'll get you fixed up. I suspect the problem is probably in A6 or A7 of the Item Tap action list in the Menu Element of the Select Calendar scene, or the Save and Exit Button element itself.

technogeezer

unread,
Aug 13, 2014, 3:00:06 PM8/13/14
to tas...@googlegroups.com
Actually, for some strange reason, the project began working.  I don't know why.  I didn't change anything.  I just tapped the icon again.  This time after selecting a calendar, the 'Save and Exit' button appeared.

Oh, well.   Don't you just love computers?

I do have one gripe, though.  Once I got past the Select Calendar screen, I was immediately presented with the Google Voice input window.  Thinking out loud I said, "Ah-ha!" and without further qualification, the project posted an all day event to my calendar called, "Ah-ha".  I don't think this is a good default behavior.

If an unqualified set of words are detected, I would ask for further clarification or to confirm the default.

Other than that, fantastic project!

Thanks

Jeremy Harris

unread,
Aug 13, 2014, 3:05:01 PM8/13/14
to tas...@googlegroups.com

I dunno if it's feasible to determine what's valid or not... What if you're going to an a-ha! (the band) concert and want it in your schedule? Lol

technogeezer

unread,
Aug 13, 2014, 3:11:12 PM8/13/14
to tas...@googlegroups.com
I still wouldn't want the calendar entry to default to all day.  ;)

Jeremy Harris

unread,
Aug 13, 2014, 4:07:59 PM8/13/14
to tas...@googlegroups.com

That's fair. You just need to set the default though. If you select a default end time in the settings, that won't happen. ;)

I believe Brandon made it so that if no end time is submitted, then default is at midnight. If no start time is submitted either then it defaults to all day.

3 to 5 pm works
At 3:00 will do 3 to midnight
No time is an all day event, and you can also specify it as such.

B^)

On Aug 13, 2014 3:11 PM, "technogeezer" <spider...@gmail.com> wrote:
I still wouldn't want the calendar entry to default to all day.  ;)

Brandon Horwath

unread,
Aug 13, 2014, 4:28:07 PM8/13/14
to tas...@googlegroups.com
Oh, well. Don't you just love computers?

That's one way to put it. Lol.

I do have one gripe, though. Once I got past the Select Calendar screen, I was immediately presented with the Google Voice input window. Thinking out loud I said, "Ah-ha!" and without further qualification, the project posted an all day event to my calendar called, "Ah-ha". I don't think this is a good default behavior.

Well... what should have happened was the prompt that appeared has "Say, Settings" on the prompt. And ideally it should launch into a sort of new user tutorial. Letting the user know how to access and navigate the menus. This probably didn't happen since there were numerous launch attempts before the project somehow began functioning properly, which possibly threw off the initialization settings.

In regards to default behavior, to be honest, I didn't think so either. What should happen, is in the experimental settings menu, there is an 'append voice timeout' slider, set that slider to a value. Now you should have access to a preview of recognized input, with options to add (manually and verbally), edit, reset, and test the detected input. The spinner that appears is the default action taken after the append voice timeout is reached (provided you haven't manually initiated an action already).

If an unqualified set of words are detected, I would ask for further clarification or to confirm the default.

Yes... but it is difficult, if not impossible to anticipate what a user would consider 'unqualified'. Phrases that begin as questions are obvious, but otherwise it's difficult to account for every possibility.

I will mention, it is possible to set a default end time for events. But, otherwise if no default start time is specified events are created lasting from midnight morning to midnight that day. I guess I could alter that where an event is instead created beginning immediately and lasting maybe a few minutes... but initially I figured it was best to error on the side of caution and have an event last too long, opposed to not long enough where the user doesn't even know it was created.

That, and with my calendar widget events that last all day (even without being flagged all day) display much nicer and easier opposed to defined time events.

I've still got some functionality I can bring into the project ;-)

Brandon Horwath

unread,
Aug 13, 2014, 9:12:31 PM8/13/14
to tas...@googlegroups.com
Rich,

Are you still having import issues?

Richard Wallace

unread,
Aug 14, 2014, 5:30:20 AM8/14/14
to tas...@googlegroups.com
 
@Brandon Horwath, yes i am...still get the same error message

Brandon Horwath

unread,
Aug 14, 2014, 6:20:48 AM8/14/14
to tas...@googlegroups.com
The scene name is different now.

Does it error, variable query scene already exists, or default time variable query scene already exists?

If it errors the first one, you may be importing the older version.

If it errors the updated scene name, I guess I picked a name you already have again :-(

technogeezer

unread,
Aug 14, 2014, 8:00:26 AM8/14/14
to tas...@googlegroups.com

Yes... but it is difficult, if not impossible to anticipate what a user would consider 'unqualified'. Phrases that begin as questions are obvious, but otherwise it's difficult to account for every possibility.


Yeah, I didn't think about the other spoken options.  That's why I have avoided spoken input for most of my projects.  It's a cool feature but the recognition technology just ain't there yet.

In this particular case, I would require a command first like "Make calendar entry" with an ack of some kind, say a beep.  That way there is no mistaking the intention.

The problem with the current default is that I had to go back and remove that accidental event from three different calendars.  :)

Absolutely fantastic job, in any case.  Can't wait to see what else you come up with.

Thanks

Richard Wallace

unread,
Aug 14, 2014, 9:08:31 AM8/14/14
to tas...@googlegroups.com
The error message i get is: Failed to import profile data

technogeezer

unread,
Aug 14, 2014, 2:15:34 PM8/14/14
to tas...@googlegroups.com

Well... what should have happened was the prompt that appeared has "Say, Settings" on the prompt. And ideally it should launch into a sort of new user tutorial. Letting the user know how to access and navigate the menus. This probably didn't happen since there were numerous launch attempts before the project somehow began functioning properly, which possibly threw off the initialization settings.


I think I know what happened.  I figured it out when I noticed my phone wouldn't speak to me anymore.

I use %Voice to determine which of many installed Ivona voices to use with the "say" action.  %Voice kept getting cleared.  Then I noticed and verified that %Voice was being cleared when I ran your Calendar.

So I'm thinking we share one or two other global variables and those variables being initialized improperly caused the startup issues.

Brandon Horwath

unread,
Aug 14, 2014, 6:23:36 PM8/14/14
to tas...@googlegroups.com
The error message i get is: Failed to import profile data

That is unusual.

Again, there should be the .prj.xml instead of .prf.xml

and just want to confirm you're using a project import method? Not profile import.

It is loading more messages.
0 new messages