Yes this is certainly possible, sounds like an awesome process! You will need 3 tables, one for tracking assets, one for your question pool and one for tracking the individual checklist items for each asset. The tracking table will be a child table to the asset table.
The question pool table will contain all of the questions that could ever be displayed. In that table you could have 1 date column (to track whether a question will be tracked over 30 days) and 1 virtual column. The date column that will populate today’s date when the question starts a 30 day cycle. The virtual column will be a yes or no column with this formula:
if ( and([DateColumn]>today()-30), isnotblank([DateColumn])), true, if(randbetween(0,1)=1, true, false))
This virtual column acts as a flag so your app can query the questions when it generates a list for the inspection. It will set all questions that are being tracked for 30 days as true and then randomly pick questions from the rest of the list.
Next you would have a asset table that will track the status of the overall inspection for each asset. When a user views the details of an asset, they can chose to “start inspection” by clicking a button “Start Inspection”. This will start a grouped action with these components:
Set asset status to “generating checklist”
An action that is “execute an action on a set of rows” with a formula of this action would look something like this.
This action will reference an action in the question pool table to copy records to a tracking table that will act as a child table to the asset table. The column used as a reference back to the asset table will be populated with a formula that performs a lookup of any asset that is of status “generating checklist”.
- Set asset status to “started Inspection”
Hopefully that helps. Let me know if you run into any roadblocks.