Когда осваиваешь что-то новое, всегда сталкиваешься с такими ситуациями, когда у тебя просто вынос мозга от того, что что-то работает не так, как ожидаешь. И какой же восторг испытваешь, как обнаруживаешь мелкую, неочевидную проблему, из-за которой весь сыр-бор. И после устранения которой все начинает работать как надо.
Короче, я приспособил под свою систему авторизацию сервис контактов Google (см. ContactsApp). Но когда я перешел к регистрации, мне конечно потребовалась функция создания нового контакта, к которому я тут же прикручиваю пару-тройку пользовательских полей.
Но вот, незадача! При любой попытке добавить пользовательское поле в новом контакте выскакивает "Exception: Не удалось найти запрошенный ресурс". Что за ерунда?
Оказывается, все дело в том, что новый контакт не создается сервисом в одну секунду. На это уходит какое-то время. И нужно просто дать сервису закончить свою работу, и только потом уже добавлять пользовательские поля.
Короче, между командой создания сервиса и командами добавления пользовательских полей я вставил следующую команду:
Utilities.sleep(5 * 1000);
И все заработало. Вот, блин! А сколько нервов, переживаний :)
Почерпнул эту идею здесь:
https://stackoverflow.com/questions/29659404/set-timeout-in-google-apps-scripts