Google Sheets Script - одна кнопка с двумя последовательными функциями (функция 1 запускается, завершается, затем запускается функция 2) - PullRequest
0 голосов
/ 27 января 2019

Я хочу иметь две функции внутри функции rolarD20 .Первый, rolarDados генерирует случайное число от 1 до 20, а второй, fixar , фиксирует число в ячейке, чтобы оно не генерировалось постоянно, - новое случайное числочисло будет сгенерировано только при повторном нажатии кнопки для rolarD20 .

Однако, чтобы заставить его работать, необходимо иметь две кнопки с одной функцией каждая, потому чтокогда я пытаюсь создать «главную» функцию с двумя работающими под ней функциями, первая не запускается:

function rolarD20(){
  rolarDados();
  fixar();
}

function rolarDados() {

  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('S5').setFormula('=RANDBETWEEN(1,20)');

}

function fixar() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('S5').activate();
  spreadsheet.getRange('S5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

};

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

Когда у меня есть две кнопки, одна для rolarDados и другая для fixar, это работает.Мне просто нужна помощь, чтобы упростить это, нажав всего одну кнопку для двух последовательных функций и, если возможно, только одно значение, генерируемое в ячейке S5.Потому что, как и сейчас с двумя кнопками, он генерирует одно случайное число при запуске функции rolarDados (значение, которое сбрасывается при втором запуске кнопки), и второе случайное число при запуске fixar , который будет храниться в ячейке.

1 Ответ

0 голосов
/ 28 января 2019

В вашем случае, я думаю, что требуется получить значение "S5" после того, как setFormula() было отражено.Для этой ситуации он использует SpreadsheetApp.flush() следующим образом.

Модифицированный скрипт:

function rolarD20(){
  rolarDados();
  SpreadsheetApp.flush(); // Added
  fixar();
}

Ссылка:

Если я неправильно понял ваш вопрос, пожалуйста, сообщите мне.Я хотел бы изменить его.

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