Автоматическое обновление Google листа при редактировании события с помощью onEdit

#google-apps-script #google-sheets #autocomplete #event-handling #switch-statement

Вопрос:

Я хочу автоматически обновлять автора в поле «Автор» в файле Google Sheet, когда автор отправляет URL-адрес содержимого в файл. В основном я получу электронное письмо активного пользователя (автора) и обновлю фиксированное имя с помощью данного электронного письма в поле.

Это мой код, но он не работает.

Может ли кто-нибудь понять, почему это не работает для меня. Спасибо

 function onEdit(e){

var row = e.range.getRow();
Logger.log(row);
//var actSpreadsheet = e.source.getActiveSpreadsheet();
var actSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//actSpreadsheet.getActiveSheet().getRange(row,4).setValue("Content nào đó");
//Logger.log(e.value);
  if (Session.getActiveUser().getEmail() == "vulinh246@gmail.com")
{
Logger.log("Content 1 đang đăng nhập");
actSpreadsheet.getActiveSheet().getRange(row,4).setValue("Content 1");
}



/* var  textlog = Session.getActiveUser().getEmail();
Logger.log( textlog); */
var  textlog = Session.getActiveUser().getEmail();
 switch(textlog){

case "linh.kcnamata@gmail.com":
  Logger.log("Content 1 đang đăng nhập");
  actSpreadsheet.getActiveSheet().getRange(row,3).setValue(Utilities.formatDate(new Date(), "GMT 1", "dd/MM/yyyy") );
  actSpreadsheet.getActiveSheet().getRange(row,4).setValue("Content 1");
  break;
case "thanlinh246@gmail.com":
  Logger.log("Content 2 đang đăng nhập");
  actSpreadsheet.getActiveSheet().getRange(row,3).setValue(Utilities.formatDate(new Date(), "GMT 1", "dd/MM/yyyy") );
  actSpreadsheet.getActiveSheet().getRange(row,4).setValue("Content 2");
  break;
case "vulinh246@gmail.com":
  Logger.log("Content 4 đang đăng nhập");
  actSpreadsheet.getActiveSheet().getRange(row,3).setValue(Utilities.formatDate(new Date(), "GMT 1", "dd/MM/yyyy") );
  actSpreadsheet.getActiveSheet().getRange(row,4).setValue("Content 4");
  break;
} 

}
 

Ответ №1:

Session.getActiveUser() требует разрешения. Область действия https://www.googleapis.com/auth/userinfo.email триггера onEdit() является простым триггером и не может выполнять функции, требующие разрешения.

Комментарии:

1. Не могли бы вы рассказать мне, как запускать функции, требующие разрешения ?

2. Дополнительная информация: все предустановленные пользователи, которых я использовал в своем файле Google Sheet, имели разрешение.

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