Как изменить ячейку, которую редактирует пользователь?(Google Sheets) - PullRequest
0 голосов
/ 19 сентября 2018

Инструмент, над которым я работаю, отображает список файлов Google Диска.Пользователям предлагается поставить «X» рядом с каждым файлом, который они хотят включить в основную библиотеку ссылок на документы.После добавления файлов я удаляю все строки, которые имеют «X».

Во время тестирования сегодня я заметил, что если я набираю «X» в ячейке, но НЕ нажимаю клавишу ВВОД, прежде чем нажать «Добавить выбранные файлы вБиблиотека », этот файл не добавляется.Это нормально, проблема в том, что все еще есть выделенная ячейка с "X", но она выключена на единицу.

Есть ли способ очистить редактируемую ячейку?Или переместите редактируемую ячейку для учета удаленной строки?

Если это поможет, вот мой код (я, очевидно, не профессиональный кодер, так что спасибо за ваше терпение):

function addToLibrary() {
  var x = 2;
  var added = 0;
  var dupes = 0;
  lib_last = libSheet.getLastRow();
  while (sheet.getRange(x,1).getValue() != "") {
    if (sheet.getRange(x,5).getValue() != "") {
      id = sheet.getRange(x,1).getValue();
      var checkRow = checkDupes(id);
      if (checkRow >= lib_last + 1) {
        var my_name = DriveApp.getFileById(id).getName();
        SpreadsheetApp.getActiveSpreadsheet().toast('The design file: ' + '"' + my_name + '"' + ' has been added to the Library!', "ADDED FILE...",600);
        var my_link = DriveApp.getFileById(id).getUrl();
        getDeets(id, my_link);
        lib_last++;
        added++;
      } 
      else {
        dupes++;
      }
    }
    x++;
  }
  SpreadsheetApp.getActiveSpreadsheet().toast("", "",0.1);
  Browser.msgBox("Finished! Documents added: " + added + ". Duplicate documents: " + dupes);
  for (var i = x - 1; i>=2; i--) { // Deletes rows with non-null
    if (!sheet.getRange(i,5).isBlank()) {
      sheet.deleteRow(i);
    }
  }
}

1 Ответ

0 голосов
/ 19 сентября 2018

Редактируемая ячейка редактируется в браузере, а не на сервере.Запрос на обновление значения не отправляется в Google, пока пользователь не прекратит редактирование.Если пользователи «останавливают» редактирование, нажимая кнопку, то существует условие гонки, между которыми сначала выполняется обработка - выполнение скрипта или фиксация состояния редактирования.

Я предлагаю использовать пользовательский скрипт / меню дополнения., что приведет к тому, что изменения ячейки будут зафиксированы до того, как будет вызвана функция, поскольку выбор браузера изменяется с ячейки электронной таблицы на строку меню листов.

function onOpen(e) {
  // add ons need to check authMode before doing this stuff
  e.source.addMenu('My Custom Menu', [
    { name: 'Add Selected Files to Library', functionName: 'addToLibrary' }
  ]);
}

Поочередно:

function onOpen(e) {
  // add ons need to check authMode before doing this stuff
  SpreadsheetApp.getUi()
    .createMenu('My Custom Menu') // .createAddonMenu()
    .addItem('Add Selected Files to Library', 'addToLibrary')
    .addToUi();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...