Why a plain copy breaks your destination sheet
When you call range.copyTo(destination) with no extra arguments, Apps Script copies the cell contents verbatim — formulas included. A formula like =SUM(B2:B50) lands in the destination still pointing at the original sheet's B column. If the destination is a different sheet, or a snapshot that is supposed to stay frozen, the formula keeps recalculating against live data. That is rarely what you want.
The fix is one extra argument: SpreadsheetApp.CopyPasteType.PASTE_VALUES. That enum tells the API to evaluate every formula first and write only the result. The third argument (transposed) is nearly always false unless you are rotating the range 90 degrees.
The first time I hit this I spent twenty minutes wondering why my Archive sheet kept updating in real time. The answer was that I had just moved the formulas, not the values.