Why TextFinder and not getValues/setValues
The instinct most people reach for first is getValues() on the full range, map() over the 2D array to swap strings, then setValues() to write it back. That works until it does not. Any cell containing a formula gets flattened to its current display value on the round-trip. A cell with =SUM(A1:A10) becomes 42. Permanently. TextFinder operates on the cell content layer directly, the same layer the native Ctrl+H dialog touches, so formulas survive untouched.
createTextFinder() returns a TextFinder object bound to whatever you called it on: a single range, a sheet, or the whole spreadsheet. replaceAllWith() fires the substitution in one API call and returns the number of cells changed, which is useful for logging or conditional logic. There is no loop to write, no quota to burn on individual setValue() calls per cell.