Хобрук: Ваш путь к мастерству в программировании

Скрипт для прокрутки Google Sheet работает, пока я не активирую другую ячейку. Почему?

У меня есть Google Sheet, где верхние 3 строки, включая заголовки столбцов, заморожены. Когда пользовательские данные вводятся в ячейку A1, мой сценарий копирует их в ячейку в другой строке электронной таблицы и активирует эту ячейку, чтобы она была видна пользователю, даже если эта строка была прокручена вне поля зрения. Все это работает правильно, пока я не добавлю следующую строку кода - чтобы повторно активировать ячейку A1 для следующего ввода пользователя.

Вот пример сценария, который я использую для устранения проблемы. Я новичок в Google Apps Script. Любая помощь будет оценена по достоинству.

function onEdit(e) { 
    // Practice script: scroll to show 
    // a cell where new data was just added

    var range = e.range;
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheets()[0];  
    var cellAddress = e.range.getA1Notation(); 
    var inputCell = 'A1';
    var inputData = sheet.getRange(inputCell).getValue(); // get user input       

     // If edited cell was A1, scroll to cell (5,5) and record user input     
     if (cellAddress === inputCell) {
     sheet.getRange(5,5).activate(); 
     sheet.getRange(5,5).setValue(inputData);

     // then reactivate inputCell

     // If the following line is executed, the sheet won't scroll to (5,5) 
     // sheet.getRange(1,1).activate();
  }
}


  • Попробуйте использовать SpreadsheetApp.flush(); между строками .activate(). 28.09.2019
  • Росс - это помогло. Это заставило прокрутку работать, но теперь последняя строка не активируется (1,1). 28.09.2019
  • Попробуйте добавить еще один в конец вашего кода. 28.09.2019
  • Это вернуло проблему, с которой я начал, она не прокручивается, но активирует inputCell (1,1). 28.09.2019

Ответы:


1

Если я правильно понимаю ваш вопрос, после редактирования A1 вы хотите:

прокрутите до ячейки (5,5), подождите, затем вернитесь к A1

Если это так, добавьте задержку с помощью Utilities.sleep (3000) - это подождет 3 секунды:

//If the following line is executed, the sheet won't scroll to (5,5) 
SpreadsheetApp.flush();
Utilities.sleep(3000)
sheet.getRange(1,1).activate();
29.09.2019
  • Спасибо! Я не думал, что мне нужна пауза, но это устранило проблему. Я уменьшил время ожидания до 50 и не думаю, что мои пользователи заметят паузу. Очень хотелось бы понять, почему раньше не работало. Вы знаете? 29.09.2019
  • Я думаю, что это сработало, если посмотреть на время выполнения, которое заняло 0 секунд, поэтому это произошло так быстро, что это не было заметно без паузы. 29.09.2019
  • Если бы он работал с моим исходным кодом, активация ячейки (5,5) заставила бы эту ячейку прокручиваться вверх и быть видимой для пользователей. Тогда активация (1,1) в замороженных строках заголовков не повлияет на строки под заголовками. Ячейка (5,5) осталась бы видимой. Вместо этого он остался в нижней части экрана. Добавление задержки определенно имело значение. Спасибо еще раз! 30.09.2019
  • Работал у меня без всяких sleep. Я просто активировал ячейку для прокрутки, flush() отредактировал ее, а затем снова активировал ячейку ввода. Работал как шарм! 22.07.2020
  • Новые материалы

    5 проектов на Python, которые нужно создать прямо сейчас!
    Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..