Как обойти перезатирание строк при большом количестве вызовов скрипта, создающего новые строки в гугл таблице?
Вариант 1 - Использовать локсервис (подробнее в документации google appsscript)
Вариант 2 - Сначала сохранять данные кеш скрипта, и настроить триггер который раз в минуту вытаскивает данные из кеша и кладет в таблицу.
Вариант 3 - Использовать sheet.append()
Вариант 4 - Сохранять не в таблицу а в базу данных
Вариант 5 - После каждой вставки строки setValue или до, использовать SpreadsheetApp.flush() (но этот вариант не очень хорош сам по себе, его лучше использовать в совокупности с другими)

---
Максим Стоянов (stomaks), pазработчик Google Apps Script.
g-apps-script.com
stomaks.me
Попробуй хранить количество записей (точнее первую пустую строку после таблицы) в этой же таблице. Таким образом получай строку, в которую нужно сохранять запись и увеличивай значение в одной строке (не то чтобы это было атомарно но наверняка это значительно уменьшит вероятность коллизий)
var seq=sheet.getRange("A1");
seq.setValue((newRowNum=seq.getValue())+1);
благодаря этому каждый экземпляр запущенного скрипта с самого начала получит свой номер строки

либо ищи другое место хранения этого сиквенса, в котором есть атомарная операция seq_id=seq++