Я ищу кнопку, чтобы запустить скрипт в Листе Google. Когда кнопка нажата, я хотел бы, чтобы столбец заполнялся «Утвержденным» для данной строки на основе зарегистрированного пользователя и электронного адреса, указанного в строке.Заполните столбец на основе данных строки
Например, в столбце A есть список разных адресов электронной почты. Нажмите кнопку, а столбец B заполнен «Утвержденный», если ваш адрес электронной почты для входа совпадает с тем, что находится в столбце A. В идеале он может искать и убедиться, что запись в столбце B еще не заполнена «Отклонено». Подумайте о супервизоре, проходящем через список, и вместо использования выпадающего списка для «Approved» в каждой строке, они могут нажать кнопку, и он одобрит все записи, к которым прикреплена их электронная почта.
У меня он работает, но он медленный и неэффективный, поскольку он проходит через каждую строку, оценивает, а затем заполняет соответствующий столбец. Он также не устанавливает разрешение для последней строки данных. Он проходит через каждую строку, заполняет, но не заполняет «Утвержденный» в последней строке введенных данных.
Я хотел бы выяснить, как это сделать с помощью массива, чтобы сделать его более эффективным.
Вот то, что я до сих пор:
function supervisorApproval(){
//This function will approve all of the peole in the respected supervisors section
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("AS");
var approverLogin = Session.getActiveUser().getEmail();
var ui = SpreadsheetApp.getUi();
//Calculate which row is the last row (last entry)
var column = sheet.getRange('W:W');
var values = column.getValues();
var lastrow = 1;
//this is inefficient code, doesn't write "approved" for last row of data
while (values[lastrow][0] != ""){
var supEmail = sheet.getRange(lastrow, 23).getValue();
var approvalCell = sheet.getRange(lastrow, 27);
if (approverLogin == supEmail){
approvalCell.setValue("Approved");
}
lastrow++;
}
}
Это сработало отлично! Благодаря SpiderPig –