Yes, it's a little bit complicated currently, to ask the kind of question you want to ask of Google Calendar. I think James would like to develop the plugin further, when he has time. But there is a long list of things to do in VoxCommando's development.
We're glad you're having fun with the program.
Below I provide three example commands. I'm sorry, I don't have time to explain everything right now. But maybe you can play with it to try to understand how it works.
You will need to also download the attached payload XML file, which I use in 2 of the commands.
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 2.2.1.3-->
<commandGroup open="True" name="Google Calendar examples" enabled="True" prefix="" priority="0" requiredProcess="" description="">
<command id="139" name="What's on my agenda {1}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="Each event for that day is returns as a match: {Match.1}, {Match.1} etc. Currently will use your default calendar feed.">
<action>
<cmdType>GgCal.GetDay</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>You schedule {PF.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.AddText</cmdType>
<params>
<param>{Match.{i}}</param>
</params>
<cmdRepeat>{#M}</cmdRepeat>
</action>
<phrase>What's on my agenda</phrase>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\Google days.xml</payloadFromXML>
</command>
<command id="135" name="What time do I {1} {2}" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>GgCal.GetDay</cmdType>
<params>
<param>{2}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.MatchConcat</cmdType>
<params>
<param>{CR}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.Replace</cmdType>
<params>
<param><![CDATA[ ]]></param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegEx</cmdType>
<params>
<param>(\w.*?{1})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)<(B)</ifType>
<ifParams>0&&{#M}</ifParams>
<then>
<action>
<cmdType>Results.RegEx</cmdType>
<params>
<param>(\d.+)\:{1}</param>
<param />
<param>{Match.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>You are scheduled to {1} {PF.2} at: {Match.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>I'm sorry, I do not see {1} scheduled {PF.2}.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</else>
</if>
<phrase>What time do I</phrase>
<payloadList>work, practice football, pick up the kids</payloadList>
<payloadFromXML phraseOnly="False" use2partPhrase="False" phraseConnector="by" Phrase2wildcard="anyone" optional="False">payloads\Google days.xml</payloadFromXML>
</command>
<command id="153" name="When do I next {1}?" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
<action>
<cmdType>Results.SetLastResult</cmdType>
<params>
<param>{1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegExReplace</cmdType>
<params>
<param><![CDATA[ ]]></param>
<param>\s</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.SetVar</cmdType>
<params>
<param>event</param>
<param>{LastResult}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>GgCal.GetRange</cmdType>
<params>
<param>0</param>
<param>6</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.MatchConcat</cmdType>
<params>
<param>{CR}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>Results.RegEx</cmdType>
<params>
<param>(\w.*?{var.event})</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<if ifBlockDisabled="False" ifNot="False">
<ifType>(A)<(B)</ifType>
<ifParams>0&&{#M}</ifParams>
<then>
<action>
<cmdType>Results.RegEx</cmdType>
<params>
<param>(\w.+)\:.{var.event}</param>
<param />
<param>{Match.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>{1} is next scheduled: {Match.1}</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</then>
<else>
<action>
<cmdType>OSD.ShowText</cmdType>
<params>
<param>I'm sorry, I do not see {1} scheduled.</param>
</params>
<cmdRepeat>1</cmdRepeat>
</action>
</else>
</if>
<phrase>When am I next scheduled to</phrase>
<payloadList>work, practice football, pick up the kids</payloadList>
</command>
</commandGroup>
Command 1, "What's on my agenda {today/tomorrow/in 2 days}" is the simplest.
For the other 2 commmands, you can provide a payload list of specific event names you want to search for. In my example, I use 3: work, football practice, pick up the kids.
If you only want to ask about "work", that would be quite a bit simpler.
The payload xml file, "Google days" is required to associate friendly terms with an index value that Google requires when you ask for a specific day. Today is 0, tomorrow is 1, etc.
A more sophisticated and versatile solution for the day of the week problem is possible, if you use our Python plugin. (See
http://voxcommando.com/forum/index.php?topic=1755.0 for a similar example.) But for now, I recommend experimenting with the command examples here.
Note: Right now, it will use the calendar feed you have set up as the default. If you want to use a different feed, there is an optional parameter in the GgCal actions where you can provide the name of the feed.
We will be "out of the office" for the next 24 hours or so, but let us know if you have any questions.