2016-03-17 4 views
0

Я использую электронную таблицу Google в качестве базовой базы данных. Соотношение «один ко многим» здесь является листом «Листы» и листом «Comms». Каждый проводник может иметь несколько сообщений (электронные письма, твиты, телефонные звонки и т. Д.)Сценарий Google Apps: создать последовательный идентификатор

Когда пользователь заполняет форму Google, у меня есть сценарий, который вставляет некоторые данные из связанного листа формы в " Поводки»лист, а также сообщения электронной почты пользователю:

function formSubmitReply(e) { 
srcSheet.getRange(srcLastRow, 1).copyTo(leadsSheet.getRange(leadsLastRow + 1, 1));  // Copy timestamp 
srcSheet.getRange(srcLastRow, 6).copyTo(leadsSheet.getRange(leadsLastRow + 1, 5));  // Copy first name 
srcSheet.getRange(srcLastRow, 7).copyTo(leadsSheet.getRange(leadsLastRow + 1, 6));  // Copy surname 
leadsSheet.getRange(leadsLastRow + 1, 3).setValue("Web - Unknown");     // Mark as WEB lead 
leadsSheet.getRange(leadsLastRow + 1, 4).setValue("New");        // Set status to NEW 
// Email the user ... 
} 

Я также хочу, чтобы генерировать идентификатор, так что я могу связать Comms обратно к данному свинца. Каков наилучший способ сделать это? Идеи, о которых я думал до сих пор, включают в себя создание очень длинного GUID или использование последовательного идентификатора, например. L1, L2, L3 и т.д.

Я предпочитаю последнюю идею для удобства чтения и дать более полное представление о данных, но

а), что код будет использовать, чтобы найти последний идентификатор с префиксом L , и увеличивать это?

b) Каков наилучший способ предотвратить инкремент идентификатора неправильно в случае, когда я повторно сортирую лист?

+2

Если вы создаете идентификатор на основе даты и времени, то никогда не будет дубликатов идентификаторов, и вам не нужно искать последний идентификатор. Эта миллисекунда вовремя не повторится. Если у вас есть ситуация, когда многие пользователи могут отправлять данные в одно и то же время, вы можете использовать LockService (который вы должны использовать в любом случае), чтобы убедиться, что часть кода не закончится одновременно. –

ответ

1

Каждый ответ имеет временную метку. Вы можете использовать его как идентификатор ответа.

Другой альтернативой является использование response_id в URL-адресе редактирования ответа.

URL, ответ выглядит следующим

https://docs.google.com/forms/d/0awKpg_finiay86360kNXrcjihl36azP3DJEaZqXDY7A/viewform?edit2=2_ABaOmuk-sIHc2HrfDJO6d8CsST-Te-5ib2l0uFknhPt0DyjM3YhSXEkEtyirN8l 

RESPONSE_ID является строкой после edit2=, поэтому для приведенного выше примера, то RESPONSE_ID является

2_ABaOmuk-sIHc2HrfDJO6d8CsST-Te-5ib2l0uFknhPt0DyjM3YhSXEkEtyirN8l 

Чтобы использовать URL уникальный ответ FormResponse.getResponseUrl

+0

Определенно хороший ответ. Моя ошибка, но я должен был упомянуть, что хочу стандартизировать метод создания идентификаторов для разных листов, которые не имеют прикрепленных форм, например. лист учетных записей, лист задач и т. д. Поэтому у меня были бы L1, L2, L3 для потенциальных клиентов и A1, A2, A3 для учетных записей. Любые другие идеи с благодарностью получили! – hazymat

+0

Спасибо. Что касается «недостающего требования», рассмотрите вопрос о публикации нового вопроса, включая все важные детали. –

Смежные вопросы