Скрипт для генерации динамического c id в Google Sheet - PullRequest
0 голосов
/ 20 февраля 2020

Я хотел бы автоматически сгенерировать УНИКАЛЬНЫЙ ID для компаний на основе первых 3 символов названия компании и прогрессивного уникального номера. Как это сделать?

https://docs.google.com/spreadsheets/d/1jjb48vME0s52mmR3qR42qQZ6oS6Psq2uMhNA8i85IY8

лист

enter image description here

1 Ответ

1 голос
/ 20 февраля 2020

Создание уникального идентификатора с первыми тремя буквами названия компании

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();
}
  1. Следующий скрипт не может быть запущен из редактора скриптов. Требуется объект события из триггера, созданного на шаге выше. Таким образом, вы можете проверить это, только добавив названия компаний в столбец 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';
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...