Показывать сообщение пользовательского интерфейса, когда значение ячейки кратно десяти 10, 20, 30

У меня есть электронная таблица, с которой я обучаю некоторых коллег, и во время упражнения я хочу подбодрить их, показывая сообщение пользовательского интерфейса, когда они завершают ввод (например, 10 или 20 предложений или более), и эту ячейку, в которой число находится групповое уравнение из другой вкладки на том же листе.

Показывать сообщение пользовательского интерфейса, когда значение ячейки кратно десяти 10, 20, 30

Я хочу показывать сообщение пользовательского интерфейса после завершения ввода (10 или 20 предложений или более).

Правильно. Хорошо, думаю, я понимаю ваш сценарий. В чем конкретно заключается проблема?

Tedinoz 09.06.2024 13:21

Спасибо, дорогой Тединоз, за ​​то, что ответили на мой вопрос. Я ценю это. Я думаю, что ответ, близкий к требуемому, объяснил коллега Уикет.

Mahmoud Ahmed 09.06.2024 19:38
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В Google Sheets невозможно отобразить сообщение, пока пользователь печатает и достигает порога, например десяти слов или любого другого. Для этого создайте диалог, используя службу HTML, а также клиентский HTML и JavaScript, включая элементы ввода или текстовой области, где пользователь выполняет задачу ввода. При необходимости диалоговое окно может отправить введенные пользователем данные в электронную таблицу.

Стоит отметить, что сообщение можно отобразить после того, как пользователь отредактировал ячейку или диапазон.


Самый простой способ в Google Sheets с помощью Apps Script отобразить сообщение пользовательского интерфейса после того, как пользователь отредактировал ячейку или диапазон, — это использовать простой триггер onEdit и SpreadsheetApp.Spreadsheet.toast("message").

Пример:

/**
 * Every time a new value is entered by a user on the keyboard in any cell, a toast will be shown.
 * @param {Object} e Edit event object. See https://developers.google.com/apps-script/guides/triggers/events#Google%20Sheets-events
 */
function onEdit(e){
  if (e.value) {
   const message = "The new cell value is " + e.value;
   SpreadsheetApp.getActiveSpreadsheet().toast(message);
  }
}

Чтобы отображать всплывающее уведомление, когда значение ячейки соответствует определенному условию, используйте JavaScript для создания условного выражения.


В Google Apps Script есть несколько способов показать «сообщение пользовательского интерфейса» в Google Sheets. В документации есть руководство по этому вопросу https://developers.google.com/apps-script/guides/dialogs. Для автоматического отображения он имеет два типа триггеров: простой и устанавливаемый. Для этого есть три руководства:

Браузер классов

Из https://developers.google.com/apps-script/reference/base/browser

Этот класс обеспечивает доступ к диалоговым окнам, специфичным для Google Таблиц.

Методы этого класса доступны для использования только в контексте электронной таблицы Google. Вместо этого используйте диалоговые окна Google Workspace.

Методы

  • SpreasheetApp.Spreadsheet.toast(...)
  • SpreadsheetApp.getUi().alert(...)
  • SpreadsheetApp.getUi().prompt(...)
  • SpreadsheetApp.getUi().showModalDialog(...)
  • SpreadsheetApp.getUi().showModelessDialog(...)
  • SpreadsheetApp.getUi().showSidebar(...)

Подробности см. https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet и https://developers.google.com/apps-script/reference/base/ui

Документация некоторых методов включает примеры.

Примечание. Методы, использующие службу HTML:

  • SpreadsheetApp.getUi().showModalDialog(...)
  • SpreadsheetApp.getUi().showModelessDialog(...)
  • SpreadsheetApp.getUi().showSidebar(...)

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


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

При нажатии на ссылку ниже откроется страница для копирования таблицы.

Копировать демонстрационную таблицу

  1. Скопируйте таблицу.
    Пожалуйста, будьте терпеливы, создание копии может занять несколько секунд. Копия будет открыта, как только она будет готова. Позже вы сможете найти его на https://sheets.google.com и https://drive.google.com под названием «Копия демо — Утилиты».

  2. Как только электронная таблица откроется, подождите немного, чтобы загрузилось пользовательское меню «Утилиты».

  3. Настоятельно рекомендуется. Прежде чем запускать сценарий, просмотрите код. Для этого нажмите «Расширения», затем «Скрипт приложений». Проект, содержащий скрипт Google Apps, будет открыт.

  4. Как только вы освоитесь с кодом, включенным в проект, вернитесь к электронной таблице и нажмите «Утилиты», затем «Счетчик слов». При первом выполнении функции, требующей авторизации для запуска, если сценарий еще не был авторизован, будет отображен запрос на авторизацию. Каждый пользователь должен авторизовать сценарий, прежде чем сможет его использовать. Если появился запрос на авторизацию, нажмите еще раз «Утилиты», затем «Счетчик слов».

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

  5. Введите в текстовое поле. Количество слов будет обновлено после ввода символа пробела, например пробела, разрыва строки и т. д.

  6. Чтобы закрыть диалоговое окно, нажмите кнопку X в правом верхнем углу.


HTML + JavaScript

Ниже приведен фрагмент проекта Google Apps Script, включающий только клиентский HTML и JavaScript.

const textarea = document.querySelector('textarea');
textarea.addEventListener('keydown', showWordCount);
const displayer = document.querySelector('span');

function showWordCount(e) {
  displayer.innerText = countWords(textarea.value);
}

function countWords(str = "Lorem ipsum dolor sit amet.") {
  return str.trim().match(/\S\s|.$/g)?.length
}
<p>The word count is shown below the text box.</p>
<textarea style = "width: 100%; height: 100px"></textarea>
<div style = "position: absolute; right: 0px;">Word Count: <span>0</span></div>

Связанный

Огромное спасибо, дорогая Уикет, за ответ на мой вопрос и за ваши советы для меня.

Mahmoud Ahmed 09.06.2024 19:39

Правильно, Уикет. Вы обратили мое внимание на то, что я искал, но не заметил. Я пытался проголосовать за ответ но не дошел до уровня, но вы любезно разъяснили мне смысл согласия на ответ. Спасибо.

Mahmoud Ahmed 10.06.2024 12:25

Другие вопросы по теме