I am a little curious as to where you have read "what we're suggested to do"... I do agree that the more "service" calls that are made the "slower" the script will run. However, I would argue that it would not be noticeable until your are dealing with a large amount of data.
It is very easy to "grab" the data from a sheet as a 2d array then use "array.filter()" to filter the data for what you are looking for. Now, I do admit that if you are "pulling the data 1 row at a time" from the spreadsheet this will take a long time. The same goes for if you are writing to the spreadsheet one row at a time.
Here is alink to a spreadsheet that has some basic code that pulls info from the student tab, filters it for a specific period number, then writes all to another tab.
Now, you might want to take advantage of some spreadsheet functions, specifically the "query()" function. You could run the query on your data filtering as you need, then in your script grab the queried data. There is an example of this in the spreadsheet I shared as well.
Hope this helps!