В скрипте Google Листа я не получаю текущее значение ячейки в редакции - PullRequest
0 голосов
/ 05 февраля 2019

В скрипте google мне нужно заполнить несколько ячеек.Когда он закончится, пользователь нажмет кнопку, которая вызовет функцию.

Проблема в том, что ячейка LAST игнорируется, если пользователь все еще фокусируется на ней.Использование HAVE TO для сохранения в другой ячейке является последней модификацией.

Пример: Введите текст в ячейку K10 и нажмите кнопку, которая вызовет btn_save

function btn_save (){
  var spreadsheet = SpreadsheetApp.getActive();

  if (spreadsheet.getRange('K10').getValue() == ''){
    Browser.msgBox('Empty :( ');
  }
  else{
    Browser.msgBox('Yeah you got it !');
  }
 }

=>у вас не будет текста!Если после написания некоторого текста в ячейке K10 вы щелкнете по другой ячейке, ПРЕЖДЕ ЧЕМ щелкнуть по btn_save, у вас будут данные ...

Это действительно проблема для меня, потому что использование забудет щелкнуть где-то еще до того, какщелкнув по кнопке, мы столкнемся с проблемой (потеря данных).

В других инструментах вам не нужно щелкать где-то еще, чтобы сохранить свои данные.например, когда вы пишете и отправляете электронное письмо, когда вы нажимаете «отправить», ваше электронное письмо отправляется со всеми данными, если событие все еще сосредоточено на теле, теме, ...

Я действительно надеюсь, что естьтакая функция, как: SaveCurrentCell, Simulate EnterKEY или что-то еще:)

Спасибо за помощь.

С наилучшими пожеланиями,

Adrien

1 Ответ

0 голосов
/ 06 февраля 2019

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

Если я правильно понимаю, вы в настоящее время используете кликабельное изображение для запуска вашей функции.Это не обновляет изменения в ячейке, которая включена в данный момент, если не нажать Enter.

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

 //onOpen will run each time the spreadsheet is opened 
    function onOpen() {
      var ui = SpreadsheetApp.getUi();
      ui.createMenu("Save Files")
         .addItem("save", "btn_save") //Binds the function btn_save to save menu item
         .addToUi();
    }


 function btn_save (){
  var spreadsheet = SpreadsheetApp.getActive();
  SpreadsheetApp.flush() //apply all pending changes!
  if (spreadsheet.getRange('K10').getValue() == ''){
    Browser.msgBox('Empty :( ');
  }
  else{
    Browser.msgBox('Yeah you got it !');
  }
 }

Наконец, onOpen - это простой простой триггер , который будет создавать ваш элемент меню при каждом открытии электронной таблицы.Поэтому, скопировав этот код в электронную таблицу, убедитесь, что вы перезагрузили электронную таблицу или запустили функцию onOpen, чтобы создать пункт меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...