Проверьте наибольшее значение di git и скопируйте текст из ячейки сетки - PullRequest
0 голосов
/ 12 февраля 2020

Я новичок в написании сценариев, но мне нужно сделать следующее в скрипте Google для моей игровой системы RPG ...

  1. Проверить ячейку на наибольшее число с номером git , т.е. 1 6 3 2 4 = 6 старшее число.
  2. Проверьте то же самое в другой ячейке.
  3. В зависимости от комбинации этих цифр, то есть 6-2, 3-4, 1-6 et c, текст из указанной ячейки c в таблице сетки на другом листе должен быть скопирован.
  4. Сетка имеет от 1 до 6 по вертикали и от 1 до 6 по горизонтали, разные тексты в каждой комбинированной ячейке .
  5. Скопированный текст должен быть введен в указанную c ячейку (т. Е. E10) на первом листе.

Может ли кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 13 февраля 2020

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

Проблема может быть решена в 3 этапа. 1) Нахождение наибольшего значения в ячейке. 2) Получение значения в таблице. 3) Установка ячейки назначения с полученным значением.

1) В зависимости от того, находите ли вы самое высокое значение в ячейке, это означает:

A) 1534 в одной ячейке и получение 5 ИЛИ Б) 1 в А1, 5 в А2, 3 в А3 и 4 в А4. и получение 5 из ячейки A2.

A: Ваше решение будет использовать комбинацию .split () & Array.prototype.concat.apply () & Math.max.apply () . Ссылка: Ввод массива в Math.Max ​​в скриптах Google Apps B: ваше решение будет использовать комбинацию getRange (строка, столбец, строка, столбец) & Array. prototype.concat.apply () & Math.max.apply ()

Вы получите выходное значение с двумя максимальными числами, которое мы назовем A и B

2) Чтобы получить значение, вам потребуется getRange (A, B) & getValue () и в зависимости от того, где находится таблица, вам может потребоваться изменить A и B, чтобы получить правильное расположение в таблице.

3) Чтобы установить значение в ячейке E1, вам потребуется функция setValue () .

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

function SetRetrievedValue() {
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //var cellcontent1 = sheet.getRange(2,1,6,1).getValues(); use this if its a range of cells you are searching
  var cell1 = sheet.getRange(1,1).getDisplayValue(); //gets value as string
  var cellcontent1 = cell1.split(""); // splits up the string individually
  var newcellcontent1 = Array.prototype.concat.apply([], cellcontent1); // flatten the array
  var maxNum1 = Math.max.apply(null, newcellcontent1); //gets the max value in the array

  // repeat of cell 1
  var cell2 = sheet.getRange(1,2).getDisplayValue(); 
  var cellcontent2 = cell2.split("");
  var newcellcontent2 = Array.prototype.concat.apply([], cellcontent2);
  var maxNum2 = Math.max.apply(null, newcellcontent2);


  var tablecell = ss.getSheetByName("Table sheet").getRange(maxNum1,maxNum2).getValue(); //retrieve the value based on the corresponding max value
  sheet.getRange(1,3).setValue(tablecell); // sets the cell C1 as the value retrieved from the table
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...