Как добавить пользователя в ячейку, показывающую, кто редактировал строку в Google Sheets?

Я на OSX 10.10.2 и преуспел в использовании JPype.

Устранены проблемы установки с Jnius ( другие тоже ), Javabridge установлен, но дал таинственные ошибки когда я попытался использовать его, PyJ4 испытывает такое неудобство при запуске сервера шлюза в Java сначала, JCC не будет устанавливать. Наконец, JPype закончил работу. В Github есть поддерживаемая форма JPype . Он имеет следующие основные преимущества: (a) он правильно устанавливается и (b) он может очень эффективно преобразовывать массивы java в массив numpy (np_arr = java_arr[:])

Процесс установки был:

git clone https://github.com/originell/jpype.git
cd jpype
python setup.py install

И вы должны быть в состоянии import jpype

Следующая демо работала:

import jpype as jp
jp.startJVM(jp.getDefaultJVMPath(), "-ea")
jp.java.lang.System.out.println("hello world")
jp.shutdownJVM() 

Когда я попытался вызвать свой собственный Java-код, мне пришлось сначала скомпилировать (javac ./blah/HelloWorldJPype.java), и мне пришлось изменить путь JVM по умолчанию (в противном случае вы получите необъяснимые ошибки «class not found»). Для меня это означало изменение команды startJVM на:

jp.startJVM('/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/MacOS/libjli.dylib', "-ea")
c = jp.JClass('blah.HelloWorldJPype')  
# Where my java class file is in ./blah/HelloWorldJPype.class
...

1
задан Ðħira Ÿesufu 18 January 2019 в 11:27
поделиться

2 ответа

Попробуйте это:

function onEdit(e) {
 var rg=e.range;
 var sh=rg.getSheet();
 var name=sh.getName();
 if( name=="GMB Descriptions") { 
   if( rg.columnStart==4) { 
     var nextCell = rg.offset(0, 1);
     if( nextCell.getValue()=='') { 
       var dt=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yy - h:mm a");
       nextCell.setValue(Utilities.formatString('%s\n%s',dt,Session.getActiveUser().getEmail()));
      }
    }
  }
}
0
ответ дан Cooper 18 January 2019 в 11:27
поделиться

Модифицированный (и немного уменьшенный) скрипт приведен ниже:

function onEdit(e) {
  var rg = e.range;
  if (rg.getSheet().getName() == "GMB Descriptions" && rg.columnStart == 4) { 
    var nextCell = rg.offset(0, 1);
    if (nextCell.getValue() == '') {
      var dt = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yyyy - h:mm a - ");
      var userMail = e.user.getEmail();
      nextCell.setValue(dt + userMail);
    }
  }
}

Благодаря Куперу за подсказку Utilities он работает отлично. Мы используем e.user.getEmail(), предполагая, что проблем с безопасностью нет (по мнению автора). Во время тестирования у меня все работает как положено.

0
ответ дан Александр Ермолин 18 January 2019 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: