Why sheet.insertImage() is the wrong tool
sheet.insertImage(url, col, row) places a Drawing object that floats above the cell grid. It anchors to a position, not a cell. Sort the sheet, insert rows, or auto-resize columns, and the image drifts. That behavior is intentional for charts and annotations, but it is actively harmful when you want an image to travel with its row, the way a product thumbnail should stay next to the SKU it belongs to.
The method you actually want is SpreadsheetApp.newCellImage(), introduced in 2022. It returns a CellImageBuilder, and the result of .build() is a CellImage value that you pass directly to cell.setValue(). The cell treats it like any other value: it moves with the row, copies cleanly, and shows up correctly in sorted or filtered views.