For completeness, I'll outline some approaches to the problem as stated. Specifically for form responses, the comment by mhoran_psprep offers a neat solution:
filters the data (columns A-Z here) so that only the last 30 rows are shown. However, it may be necessary to guard against there being fewer than 30 rows, when Large throws an error. This could be done with
=FILTER(A2:B, A2:A>=IFERROR(LARGE(A2:A,30), MIN(A2:A)))
Here is an alternative way, which does not rely on the values being sorted (but assumes no blanks between data). Adapted from Stack Overflow answer by dohmoose):
=FILTER(A2:A, ROW(A2:A) > COUNTA(A1:A)-30)
To also support blanks cells in between, there are multiple approaches, none of which is clearly better than others. I refer to Selecting the last value of a column and Last non-empty cell in a column - Google Docs for comparison.