Скрипт: выделено жирным шрифтом - PullRequest
1 голос
/ 16 апреля 2020

Я получил массив в Google Sheet, который выглядит примерно так:

+-----+---------+------------+------------+------------+-----+
|     |    A    |      B     |      C     |      D     | ... |
+-----+---------+------------+------------+------------+-----+
|  0  |         | Mission #1 | Mission #2 | Mission #3 | ... |
+-----+---------+------------+------------+------------+-----+
|  1  | Item #1 |     100    |     250    |     250    | ... |
+-----+---------+------------+------------+------------+-----+
|  2  | Item #2 |     200    |    1000    |     500    | ... |
+-----+---------+------------+------------+------------+-----+
|  3  | Item #3 |     300    |    3000    |     800    | ... |
+-----+---------+------------+------------+------------+-----+
| ... |   ...   |     ...    |     ...    |     ...    | ... |
+-----+---------+------------+------------+------------+-----+

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

Так что я ожидаю делать:

+-----+---------+------------+------------+------------+-----+
|     |    A    |      B     |      C     |      D     | ... |
+-----+---------+------------+------------+------------+-----+
|  0  |         | Mission #1 | Mission #2 | Mission #3 | ... |
+-----+---------+------------+------------+------------+-----+
|  1  | Item #1 |     100    |     250    |   **250**  | ... |
+-----+---------+------------+------------+------------+-----+
|  2  | Item #2 |     200    |  **1000**  |     500    | ... |
+-----+---------+------------+------------+------------+-----+
|  3  | Item #3 |     300    |  **3000**  |     800    | ... |
+-----+---------+------------+------------+------------+-----+
| ... |   ...   |     ...    |     ...    |     ...    | ... |
+-----+---------+------------+------------+------------+-----+
** = is bold

Итак, я начал думать:

  • var Item1High = max(b1;d1);
  • For each row (X1) if value == Item1High then set to bold

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

Не могли бы вы помочь мне с этим? Я использую Google Sheet Script в JavaScript.

Спасибо!

1 Ответ

2 голосов
/ 16 апреля 2020
  • Вы хотите установить максимальный тип полужирного шрифта в каждой строке таблицы Google.
  • Например, когда столбцы "B" и "C" имеют одинаковое значение, и максимальное значение, вы хотите установить жирным шрифтом для столбца "C".
  • Вы хотите достичь этого с помощью скрипта Google Apps.

Поток этого примера сценария выглядит следующим образом.

Поток:

  1. Извлечение всех значений из листа.
  2. Создание стилей текста.
  3. Установка созданных стилей текста.

Пример сценария:

Перед запуском сценария установите имя листа.

function myFunction() {
  const sheetName = "Sheet1";

  // 1. Retrieve all values from the sheet.
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  const range = sheet.getDataRange();
  const values = range.getValues();
  values.shift();

  // 2. Create text styles.
  const tempStyle = SpreadsheetApp.newTextStyle().setBold(false).build();
  const bold = SpreadsheetApp.newTextStyle().setBold(true).build();
  const styles = values.map(r => {
    r.shift();
    let ar = Array(r.length).fill(tempStyle);
    ar[r.lastIndexOf(Math.max(...r))] = bold;
    return ar;
  });

  // 3. Set the created text styles.
  range.offset(1, 1, styles.length, styles[0].length).setTextStyles(styles);
}

Ссылки:

Добавлено:

В этом примере сценария выбранный диапазон б.

function myFunction() {
  const sheetName = "Sheet1";
  const selectRange = "B2:D4";  // Please set the range you want to use.

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  const tempStyle = SpreadsheetApp.newTextStyle().setBold(false).build();
  const bold = SpreadsheetApp.newTextStyle().setBold(true).build();
  const range = sheet.getRange(selectRange);
  const values = range.getValues();
  const styles = values.map(r => {
    let ar = Array(r.length).fill(tempStyle);
    ar[r.lastIndexOf(Math.max(...r))] = bold;
    return ar;
  });
  range.setTextStyles(styles);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...