Создание уникального идентификатора с первыми тремя буквами названия компании
function getUniqueId(companyname){
var companyname=companyname||'Google';
var prefix=companyname.slice(0,3).toUpperCase();
var ps=PropertiesService.getScriptProperties();
var n=ps.getProperty(prefix);
if(!n) {
ps.setProperty(prefix,1);
n=1;
}
ps.setProperty(prefix, Number(n)+1);
Logger.log(Utilities.formatString('%s%06d',prefix,n));
return Utilities.formatString('%s%06d',prefix,n);
}
Коды формата Sprintf
Запустите эту функцию один раз, чтобы создать устанавливаемый триггер.
function createOnMyEditTrigger() {
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger('onMyEdit').forSpreadsheet(ss.getId()).onEdit().create();
}
- Следующий скрипт не может быть запущен из редактора скриптов. Требуется объект события из триггера, созданного на шаге выше. Таким образом, вы можете проверить это, только добавив названия компаний в столбец B. этого листа.
function onMyEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Foglio1')return;
var v=e.range.offset(0,-1).getValue();
if(e.range.columnStart==2 && e.range.rowStart>1 && e.value && !v) {
e.range.offset(0,-1).setValue(getUniqueId(e.value));
}
}
Всегда проверяйте, чтобы убедиться, что у вас есть только один триггер для этой функции.
Хорошо, я думаю, это то, что вы хотите:
Я думаю, вы должны go в Свойства файла / проекта и удалить старые свойства скрипта. А затем замените старый getUniqueId на этот. Не оставляйте старую в проекте, потому что все функции должны иметь отличия в проекте, и вы действительно не хотите иметь другую, потому что это может вызвать проблемы с этим.
function getUniqueId(companyname){
if(companyname) {
var prefix=companyname.slice(0,3).toUpperCase();
var ps=PropertiesService.getScriptProperties();
var un=ps.getProperty('uneek');
if(!un) {ps.setProperty('uneek',1);}
var v=ps.getProperty(prefix);
if(!v) {
var v=ps.getProperty('uneek');
ps.setProperty(prefix,v);
ps.setProperty('uneek',Number(v)+1);
}
return Utilities.formatString('%d-%s',v,prefix);
}else{
return 'Invalid CompanyName';
}
}