Как обновить sh случайные JS переменные в Google Таблицах - PullRequest
0 голосов
/ 05 мая 2020

У меня есть сценарий в Google Таблицах, который генерирует случайный символ хираганы, и он отлично работает, но не обновляет sh случайное, если я не переписываю функцию. Есть ли способ обновить элементы sh random JavaScript без необходимости переписывать функцию или возвращать ее в лист?

Вот мой код:

function RandomVowel() {
  var array = ["あ","い","う","え","お"];
  var RandomValue = array[Math.floor(Math.random() * array.length)];
  return RandomValue
}

1 Ответ

0 голосов
/ 11 мая 2020

Решение

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

Для достижения того, к чему вы стремитесь, сначала необходимо создать устанавливаемый триггер на основе времени (в IDE сценария с go до Edit -> Current project's триггеры и создайте новый триггер с вашим именем функции, на основе времени и для его запуска каждую минуту) , а затем запустите следующий фрагмент кода с самообъяснением:

function RandomVowel() {
  var array = ["あ","い","う","え","お"];
  var RandomValue = array[Math.floor(Math.random() * array.length)];
  
  // Get the sheet you want your characters to be shown
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  
  // Choose the cell you want to set to these random values every minute
  sheet.getRange('A1').setValue(RandomValue);
  // For a range of cells
  // sheet.getRange('B1:C3').setValues(RandomValue);
}

Чтобы достичь этого в диапазоне, вы должны сначала обернуть часть, в которой мы устанавливаем значения, в два цикла for (один для строк и один для столбцов), чтобы убедиться, что на каждой отдельной итерации случайное значение будет другим (в отличие от простой установки переменной на весь диапазон, в результате чего все ячейки будут иметь одинаковое значение).

В следующем примере мы устанавливаем первые 10 строк и 2 столбца на эти случайные значения (т.е. от A1:B10):

function RandomVowel() {
  var array = ["あ","い","う","え","お"];
  
  var sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1');
  
  // Sets the first 10 rows of the first 2 column to random values (i.e A1:B10)
  for(j=0;j<2;j++){ // for the columns
    for(i=0;i<10;i++){ // for the rows
      var RandomValue = array[Math.floor(Math.random() * array.length)];
      sheet.getRange(i+1,j+1).setValue(RandomValue);
    }
  }
}

Надеюсь, это вам помогло. Дайте мне знать, если вам еще что-нибудь понадобится или вы чего-то не поняли. :)

...