Print selected record with its childs

Sure, i just read and access to the thread you opened up here, my impression was you cant achieve your goals by doing what you are trying to do with Appsheet, so I suggested to consider to have a different approach.

Nothing is impossible with Appsheet. But the danger is to stick with one approach, while we may have other approach to end up with the same result.

Yes, this is complicated and challenging subject, but that s why it is interesting.

Appsheet surely can manage to deal with your unique requirement, I believe, for sure, but to see the same thing, sometime we need to see the same from the different approach and/or angles.

We may sacrifice one thing during the new process, but as far as we are able to achieve the goal, it should not be a matter.


Hi @tsuji_koichi,

Thank you for your valuable inputs. As always, I respect your evaluation and inputs.

Hi @Geovany_Kelly,

Since I participated in this post thread , requesting you to do certain steps, I feel obliged to work more on this requirement. I will be glad to work with you further on this to the best of my ability. I propose following

I will go through this entire post thread again and try to revert with some approach, if feasible and within my capacity. I may have more queries to you during this time. Also since this thread has become substantially long , we may take it offline through mesaging service of this portal and post approach , if found, later for reference here. We may request community experts’ guidance, if required, in between.

Of course,as @Phil has guided, please note that we will not be working on pagination, headers, footers etc.

I am sorry that I need to call it a day as it is late night at my place. However, I will be willing to work on this tomorrow. Request let me know your thoughts.


I will revert tomorrow as well nigh nigh.


Thank you @tsuji_koichi- that will be great.

Thanks all for replying, and both @Suvrutt_Gurjar, @tsuji_koichi

really appreciate for taking time to help on this. That kind of attitude has been key to make AppSheet a great platform to develop Apps.

I will continue testing and pending of any comments to get this solved. Thanks again, guys.

1 Like

I just quickly created a sample app to share my idea to set up Apps to manage

  1. Select the name of countries (enumlist)
  2. Fire the email workflow to generate the tables / list of “selected” countries alone together with each child records associated with each country.

The approach is different from one which have been discussed earlier on this thread, but let the user to select the country through the FORM (rather than select ones over the Deck view and trigger the bulk actions), and then saving form will fire the workflow to submit email with attachment to the log in user.

This is little complicated tricks, so please copy my sample app and look inside.

Sample app is right here.

here is sample for sample PDF which is generated by this sample app.



Hey @tsuji_koichi!

That was brilliant! Definitely that is a solution for this topic using another approach!

You know, I will try to take some of your app logic to adapt it to my original approach, I will try to use the same action when selecting, then when click the action button will add the countries to a new table “Print” and finally trigger the email when ADD_ONLY for that “Print” table. I will try and keep you posted.

Again, thank you so much guys!
@Suvrutt_Gurjar Many, many thanks!

1 Like

Yes, this is just ONE approach to reach out to the goal, and there should be another different approaches and workaround.

Take just an essence out of this sample and implement nice feature and function to your own app.

Let me know if you need more help on this topics.


Thanks @tsuji_koichi, just one doubt, following your sample app, would perfectly works if there are multiple users printing? Question, the app as it is, would it print what each user selected?

Yes, off course.

Each login user will not be bothered by other users.

Setting (in this case, selection) is always owned by the login users. You see useremail() expression in the print table, where we capture who made and save new form. And security setting for this table, we only read the row with email value which matches with login user.

1 Like

Hi @tsuji_koichi,

Thank you so much. Will test it soon.

@Geovany_Kelly has mentioned it works as per his requirement. Well done @tsuji_koichi

Thank you to @Aleksi and @Phil as well. Your insights are always practical and very guiding for us.


Gotcha! I just seen it. Alright, I don’t bother you more for now haha, I will test with my approach and let you know.

Thanks again, @tsuji_koichi


Please take your own time to look deep inside my sample app to see all the anatomy!!!
You will find it is not super complicated, just logical.

Enjoy my sample app haha.


I just threw a different spice to get different flavor :wink:

1 Like

Hi @tsuji_koichi,

I copied and browsed your app. Neat , clean implemenation indeed. Basically you separated printing selection into another table and then attached the selection status back to data source tables and then a clever use of slice of selected countries for the template. Very neat work indeed. :+1:


You might read the descriptions I stated on the sample app page. Basically, we are missing sort of “state management” system within Appsheet. Meaning we are not able to store the particular data temporarily on the browser storage. For instance, the values of enumlist being selected by each users, we are not able to store those values in the app. That is the problem. To solve this, UserTable kinda of arrangement should solve, but on this particular case, I capture the values and store as a set of table, but we dont need the last values which need to be ruled out. Old selection of the countries in this case are kept saved in the table, but we wont use any longer, only need the most latest row and its value.

The trick is boiling down to a single expression within VC in country table like this.



Simple expression isnt it?

To store the most latest “selected country values as list type”, just slice the table to get the single row with max, timestamp value etc.

Actually, we are not OVERWRITING this latest value all the time new form is generated. It could be possible we prepare the unique rows for printing table for each login users, and they keep refresh and updating the selection and then fire workflow, but my workaround should be better to do the same.

Actually we are able to use this tricks for another purpose and use case as well.

I m calling this trick as “Appsheet state management system” :wink:

Javascript liberary, angular, vue, react, they do have own state management system to develop single web page application (SPA), i just borrow such technique to implement into the Appsheet.


Hey @tsuji_koichi just a little bug I found, if possible make the update in your sample app, so developer don’t lose the mind as I did minutes ago haha.

Column “TimeStamp” from “Print” table change the column type from Time to DateTime, only that.

Let me explain why, since for now you are only saving the time and selecting the countries with the max TimeStamp, it would be issue if the same user print in the night, and maye print next day morning:

give it a look, the last print I submitted was at “0:58:47” but the formula returns the max time: “19:43:08”

after change and working like a charm:

1 Like

By the way the current report is working fine:

But how if I want data like this:

I am not getting any email none attachment. Am I doing something wrong?

Sorry, i forgot to change the data type to DateTime. I just updated my sample.

In terms of your mail template, I understand start end expression is only valid for list/table style only, but I m not entirely sure.

1 Like

Just worth trying.

What s gonna happen if you change the template like this?


Move start end expression outside table and sandwich the whole table?