Создание функции редактирования поста - PullRequest
0 голосов
/ 29 сентября 2019

В настоящее время я использую функцию onEdit, чтобы помочь в сортировке листа. Лист сортируется, когда значение вводится в столбец A, но я бы предпочел, чтобы лист сортировался после того, как все значения в столбцах AF были введены, из-за недостатка знаний в области кодирования мне нужна помощь по этому вопросу.

var SORT_COLUMN_INDEX = 2;
var ASCENDING = true;
var NUMBER_OF_HEADER_ROWS = 1;

var activeSheet;

function autoSort(sheet) {
  var range = sheet.getDataRange();

  if (NUMBER_OF_HEADER_ROWS > 0) {
    range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
  }
  range.sort( {
    column: SORT_COLUMN_INDEX,
    ascending: ASCENDING
  } );
}
function onEdit(event) {
  var editedCell;
  activeSheet = SpreadsheetApp.getActiveSheet();
  editedCell = activeSheet.getActiveCell();
  if (editedCell.getColumn() == SORT_COLUMN_INDEX) {
    autoSort(activeSheet);
  }
}

function onOpen(event) {
  activeSheet = SpreadsheetApp.getActiveSheet();
  autoSort(activeSheet);
}

function onInstall(event) {
  onOpen(event);
}

1 Ответ

0 голосов
/ 08 октября 2019

Вам нужны два индекса столбца

  • a SORT_COLUMN_INDEX, который указывает, по какому столбцу должен быть отсортирован лист, и
  • a TRIGGER_COLUMN_INDEX, который указывает после редактирования какого столбцаfunction autoSort должен быть вызван.

Вы можете изменить свой код следующим образом:

var SORT_COLUMN_INDEX = 1;
var TRIGGER_COLUMN_INDEX = 6;
var ASCENDING = true;
var NUMBER_OF_HEADER_ROWS = 1;

var activeSheet;

function autoSort(sheet) {
  var range = sheet.getDataRange();

  if (NUMBER_OF_HEADER_ROWS > 0) {
    range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
  }
  range.sort( {
    column: SORT_COLUMN_INDEX,
    ascending: ASCENDING
  } );
}
function onEdit(event) {
  var editedCell;
  activeSheet = SpreadsheetApp.getActiveSheet();
  editedCell = activeSheet.getActiveCell();
  if (editedCell.getColumn() == TRIGGER_COLUMN_INDEX)  {
    Logger.log('column '+editedCell.getColumn()+' edited');
 autoSort(activeSheet);
  }
  else{
    Logger.log('other column edited');
  }
}

function onOpen(event) {
  activeSheet = SpreadsheetApp.getActiveSheet();
  autoSort(activeSheet);
}

//Sure that you need the following function?
function onInstall(event) {
  onOpen(event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...