I don't think version 17,0,2,0 had API's.
I suggest you upgrade your environment and use below mentioned solution.
When applicable please mark the appropriate replies as CORRECT. This will help community members and Qlik Employees know which discussions have already been addressed and have a possible known solution. Please mark threads as HELPFUL if the provided solution is helpful to the problem, but does not necessarily solve the indicated problem. You can mark multiple threads as HELPFUL if you feel additional info is useful to others.
1. Using API is the only way of achieving this.
Api reference is here https://help.qlik.com/en-US/nprinting/November2017/Content/Extending/Intro-Extending.htm
2. BTW - make yourself friend with this website - it will answer 99% of your questions --> https://help.qlik.com/
3. Re version?
I am not super familiar with the versions however you need to meet following requirements
- QlikView Desktop 11.20 SR15 or higher and 12.00 SR5 are supported.
- QlikView Desktop 12.10 SR1 or higher is supported starting from Qlik NPrinting 17.2.2 and includes On-Demand reports.
- QlikView Desktop Personal Edition is not supported.
QlikView Desktop is required on the Qlik NPrinting engine computer, even if QlikView Server Enterprise Edition or Small Business Edition is also installed on that server. QlikView Server and QlikView Desktop must be the exact same version, including the release number.
QlikView Desktop must be installed locally on the same physical or virtual computer as the Qlik NPrinting engine.
QlikView Desktop is not required if you are only connecting to Qlik Sense apps.
An alternative to API triggered events is to use a 'polling' trigger in NPrinting that looks at Qlik variables in your app to represent the last reload:
and a time 5 minutes ago or whatever tolerance you want - could be every hour if the report doesn't need to arrive immediately after the reload:
I used a SET statement in a Qlik Sense load script so that NPrinting would evaluate these vars at NP report time rather than at QS reload time, which is what a LET statement would do.
Next, set up a Condition in NPrinting that says:
vLastReload >= vFiveMinsAgo is True
Then set up a Publish Task trigger to run every 5 minutes (or other tolerance if different as per above) with the condition applied. If the condition is False the report won't run and no significant resources are used. If the app has been reloaded and the condition is True, the report runs.
I've used this successfully for a NPrinting report using Qlik Sense v3.2.5 and NP Sept 2017, but should be similar for Qlikview and I can't think much has changed with variables since NP v18.104.22.168? Of course I could be wrong about the latter as that's a pretty old version now
Let me know if this works for you.
Admittedly it might not scale well if there are 100's or 1000's of dependent reports like this, but we have over 1,000 apps in our Qlik Sense site, over 100 reload tasks but only a handful that need dependent reports sent out, so it works well. Most reports are sent on an independent schedule.
Of course this example suggests a 5 minute 'poll' resulting in 288 triggers/day, but if the tolerance for firing the report is longer, say within 30mins of the data reload, this needs only 48 poll triggers/day.
To give an idea of the resources involved, using a condition only fires the trigger event and a check of the condition, which is minimal in terms of resources - takes less than a second on our site:
No worries - and like i said this is a great idea and i am not questioning this... My concern was around numbers of reports which require this kind of dependency - and as you pointed 1-2, few... maybe 20 is not a problem..
I was talking rather about 100 publish tasks which can require 5 min pulling frequency to check condition - then it becomes sort of heavy.
...but to be honest - I like your idea better then API solution!!!
Cheers and Thanks