С помощью триггера onEdit, есть ли способ убедиться, что последняя строка в листе видна пользователям? - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть Google Sheet, который накапливает до 100 записей в день.Когда пользователи добавляют новые записи, скрипт помещает новые данные в последнюю строку (см. Фрагмент ниже).Однако на экране видно только 12 строк, поэтому после их заполнения пользователь не сможет увидеть новые записи.

Как я могу сделать последний ряд видимым для пользователя при каждом вводе данных?

Я новичок в google-apps-script, так что спасибо за любые идеи.Я считаю, что onEdit триггер больше не работает с sheet.setActiveRange(), поэтому я ищу обходной путь.Если нет простого решения, я возьму неуклюжее.Например, можно ли использовать скрипт, чтобы скрыть строки выше последней строки?

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var SHEET_NAME = 'Sheet1' // Name of current sheet
    var sheet = ss.getSheetByName(SHEET_NAME);
    var dataCell = sheet.getRange('A1');
    var lastRowNumber = sheet.getDataRange().getNumRows();
    var newData = dataCell.getValue().split(",");
    var lastRow = ss.getLastRow();

    sheet.appendRow(newData);

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Нашел решение: setActiveRange (lastRow + 2, lastColumn).Прокрутите вниз достаточно далеко, без необходимости получать диапазон добавленного ряда.Дополнительное преимущество заключается в том, что он прокручивается до добавления строки, поэтому пользователь видит данные по мере их поступления.

function onEdit(e) { // Puts csv user data into Sheet1
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var SHEET_NAME = 'Sheet1' // Name of current sheet
    var sheet = ss.getSheets()[0];
    var dataCell = sheet.getRange('A1');
    var newData = dataCell.getValue().split(",");

     // Gets the address of the very last cell of this sheet
     var lastRow = sheet.getLastRow();
     var lastColumn = sheet.getLastColumn();

     // Scrolls to make sure user can see 2 rows below the current last cell
     var lastCell = sheet.getRange(lastRow+2, lastColumn);

    // Puts user entered data into a new row at the bottom of the spreadsheet
    sheet.appendRow(newData);
    sheet.setActiveRange(lastCell);
}
0 голосов
/ 21 сентября 2019

Вы можете получить новый добавленный диапазон, добавив 1 к последней строке и активировать it:

var lastRow = ss.getLastRow();
sheet.appendRow(newData);
sheet.getRange("A" + (lastRow+1)).activate();//activate the newly appended row's A cell
...