сценарий запускает случай владельца при запуске редактором - PullRequest
1 голос
/ 26 марта 2019

когда редактор моего google-doc запускает скрипт, он запускает мой собственный случай вместе со своим.Как я могу предотвратить это?

Я пробовал оба getActiveUser и getEffectiveUser с активным единственным отличием вызвал только мой случай.в настоящее время существует 2 триггера, один для меня и второй для редактора, оба созданы соответствующими учетными записями Gmail

function timestamp(e) {
  var count = 0
  var doc = DocumentApp.getActiveDocument();
  var me = "xxx@gmail.com"
  var userName = Session.getActiveUser().getEmail();
  var date = Utilities.formatDate(new Date(), "GMT+1", "dd/MM"+" HH:mm");
  var body = doc.getBody();
  console.log();

  if (!count){
  switch (userName){
    case "xxx@gmail.com":
      if (userName == me){
      body.editAsText().replaceText(">Xxx<.*$", ">Xxx< " + date);
      count = 1;
      break;
      }
    case "zzz@gmail.com":
      body.editAsText().replaceText(">Zzz<.*$", ">Zzz< " + date);
      count = 1;
      break;       
}
}
}

выходные данные должны быть меткой времени даты и времени для пользователя, открывшего документ

консоль 1

{
 insertId: "mh4nwqe6ptif"  

labels: {
  script.googleapis.com/deployment_id: "AKfycbwfuWqQks2U7sKVzpX26w8lL-hm0CciOGeZ4EmtOUUi"   
  script.googleapis.com/process_id: "EAEA1GOyI3tGd4a3vorh4JNBVOHgi6RgYtgFwrZD0nvmTX_Cf0-bmsPRXgqyH6DUJSet4rxj4CCOdWLDY1NjQG1qFzsVDoB9LatI74BPQ4_8R6K1Ek6cBBXr0JyBbWMXTtPbPe_Ne4mneJWnF3oSuDEtiOv3XYBHwWJ0mKQ"   
  script.googleapis.com/project_key: "MWWPE_X-NNcz9aBsDbXTBen9WCo1QLwkg"   
  script.googleapis.com/user_key: "ABkUwjbdkw+qwq/LIW606KMmYd6VVd6glH8f8PVSWy8MdK8XykhyjpFux1uTehrMsXoQJEjH8Uv8"   
 }
 logName: "projects/project-id-9053084063274654670/logs/script.googleapis.com%2Fconsole_logs"  
 receiveTimestamp: "2019-03-26T20:12:34.358323783Z"  

resource: {

labels: {
   function_name: "timestamp"    
   invocation_type: "event"    
   project_id: "project-id-9053084063274654670"    
  }
  type: "app_script_function"   
 }
 severity: "WARNING"  
 textPayload: "The script does not have permission to get the active user's identity."  
 timestamp: "2019-03-26T20:12:34.114Z"  
}

консоль 2

 {
 insertId: "pszlqvei0ldj"  

labels: {
  script.googleapis.com/deployment_id: "AKfycbwfuWqQks2U7sKVzpX26w8lL-hm0CciOGeZ4EmtOUUi"   
  script.googleapis.com/process_id: "EAEA1GOyS_38lVqx6GOormX6vTH7wk4L_iK_koMbvlaUgunXHMST8CqgrmFYGcVn7suDHZf1egvGGL2XGqmmXgKqxN1IXlyBoMEt3prWsNpZnMTok5BGvUat_-KTnmv471C5-l3ATXFXQvvEEzkGJTPW7fBFLE71JBtvex1XOgd0"   
  script.googleapis.com/project_key: "MWWPE_X-NNcz9aBsDbXTBen9WCo1QLwkg"   
  script.googleapis.com/user_key: "ABkUwjbdkw+qwq/LIW606KMmYd6VVd6glH8f8PVSWy8MdK8XykhyjpFux1uTehrMsXoQJEjH8Uv8"   
 }
 logName: "projects/project-id-9053084063274654670/logs/script.googleapis.com%2Fconsole_logs"  
 receiveTimestamp: "2019-03-26T20:12:33.950683014Z"  

resource: {

labels: {
   function_name: "timestamp"    
   invocation_type: "event"    
   project_id: "project-id-9053084063274654670"    
  }
  type: "app_script_function"   
 }
 severity: "DEBUG"  
 textPayload: ""  
 timestamp: "2019-03-26T20:12:33.801Z"  
}

разделенный_код

function Xxx(e) {
  var doc = DocumentApp.getActiveDocument();
  var userName = Session.getEffectiveUser().getEmail()
  var date = Utilities.formatDate(new Date(), "GMT+1", "dd/MM"+" HH:mm");
  var body = doc.getBody();
  if (userName == 'Xxx@gmail.com' ) {
    body.editAsText().replaceText(">Xxx<.*$", ">Xxx< " + date);
  }
}

^^^ повторяется для всех остальных 6 пользователей

1 Ответ

1 голос
/ 31 марта 2019

Итак, как предположил TheMaster, я думаю, что мне не удалось получить полностью автоматизированное решение, которое я хотел, но я нашел обходной путь

function onOpen(e) {
  DocumentApp.getUi().createAddonMenu()
      .addItem('timestamp' , 'Dontrun')
      .addToUi();
}

function Dontrun(e) {
  var doc = DocumentApp.getActiveDocument();
  var userName = Session.getActiveUser().getEmail();
  var date = Utilities.formatDate(new Date(), "GMT+1", "dd/MM"+" HH:mm");
  var body = doc.getBody();

  switch (userName){
    case "xxx@gmail.com":
      body.editAsText().replaceText(">Xxx<.*$", ">Xxx< " + date);
      break;
    case "zzz@gmail.com":
      body.editAsText().replaceText(">Zzz<.*$", ">Zzz< " + date);
      break;       
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...