О Google Sheets, которым делятся пользователи - PullRequest
0 голосов
/ 22 мая 2019

Я поделился с другими Google-листами.Мое имя листа "OrderList".Я ищу сценарий, который захватывает адрес электронной почты пользователя и вводит данные в другую ячейку, когда пользователь редактирует лист.Я написал следующий код, однако он возвращает только адрес Gmail владельца листа:

var COLUMNTOCHECK1 = 5;
var COLUMNTOCHECK2 = 6;

var DATETIMELOCATION1 = [0,2];
var DATETIMELOCATION2 = [0,3];

var SHEETNAME = 'OrderList'

function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();

if( sheet.getSheetName() == SHEETNAME ) { 
var selectedCell = ss.getActiveCell();

if( selectedCell.getColumn() == COLUMNTOCHECK1) { 
    var email = Session.getActiveUser().getEmail();

  var dateTimeCell = 
  selectedCell.offset(DATETIMELOCATION1[0],DATETIMELOCATION1[1]);
  dateTimeCell.setValue(new Date());
  var dateTimeCell1 = 
  selectedCell.offset(DATETIMELOCATION2[0],DATETIMELOCATION2[1]);
  dateTimeCell1.setValue(email);
  }
   if( selectedCell.getColumn() == COLUMNTOCHECK2) { 
  var dateTimeCell = 
  selectedCell.offset(DATETIMELOCATION2[0],DATETIMELOCATION2[1]);
  dateTimeCell.setValue(new Date());
   }

   }
   }

1 Ответ

0 голосов
/ 22 мая 2019

Поскольку вы используете этот onEdit(e), вы можете использовать Объекты событий , они отлично подходят для сбора данных, которые вы пытаетесь получить.Вам необходимо настроить триггер onEdit для вашего проекта, чтобы захватить адрес электронной почты, хотя.Приведенный ниже код должен обеспечить то, что вы ожидаете.

var COLUMNTOCHECK1 = 5;
var COLUMNTOCHECK2 = 6;

var DATETIMELOCATION1 = [0,2];
var DATETIMELOCATION2 = [0,3];

var SHEETNAME = 'OrderList'

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  if( sheet.getSheetName() == SHEETNAME ) { 
    var selectedCell = ss.getActiveCell();

    if( selectedCell.getColumn() == COLUMNTOCHECK1) { 
      var email = e.user.getEmail();

      var dateTimeCell = 
          selectedCell.offset(DATETIMELOCATION1[0],DATETIMELOCATION1[1]);
      dateTimeCell.setValue(new Date());
      var dateTimeCell1 = 
          selectedCell.offset(DATETIMELOCATION2[0],DATETIMELOCATION2[1]);
      dateTimeCell1.setValue(email);
    }
    if( selectedCell.getColumn() == COLUMNTOCHECK2) { 
      var dateTimeCell = selectedCell.offset(DATETIMELOCATION2[0],DATETIMELOCATION2[1]);
      dateTimeCell.setValue(new Date());
    }

  }
}

Как видите, я изменил ваш var email на использование объекта события для захвата адреса электронной почты пользователя, который редактируетэлектронная таблица:

var email = e.user.getEmail();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...