Пользовательская функция Google Script для возврата форматированного текста

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

Возвращенная строка:
-> Place1:
- Service1;
- Service2.

-> Место2:
- Сервис3;
- Сервис4.

Желаемый возврат:
-> Место1:
- Услуга1;
- Услуга2.

-> Место2:
- Сервис3;
- Сервис4.

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

function test(){
  var bold=SpreadsheetApp.newTextStyle().setBold(true).build();
  var test=SpreadsheetApp.newRichTextValue().setText("test").setTextStyle(0,2,bold).build().getText();
  return test;
  }

Это очевидно, можно сказать, что «getText ()» возвращает строку, содержащуюся в RichTextValue, поэтому я знаю, что она не вернет RichText. Итак, я попробовал «getRuns (). Join ()» (присоединился, потому что getRuns возвращает массив) после «build ()» и получил следующий результат: «com.google.apps.maestro.server.beans.trix.impl.RichTextValueApiAdapter @ 2d54d6e, com.google.apps.maestro.server.beans.trix.impl.RichTextValueApiAdapter @ 4c67374a ".

Итак, мой вопрос: есть ли "getRichText ()" в качестве возврата для моей пользовательской функции или какой-либо другой способ сделать это?

Заранее спасибо.


person Baraka    schedule 21.11.2019    source источник
comment
Если кто-то столкнется с этой проблемой, поддержите этот запрос функции: issueetracker.google.com/issues/145501368   -  person Baraka    schedule 03.12.2019


Ответы (1)


На самом деле НЕЛЬЗЯ возвращать форматированные данные для пользовательских функций, только необработанные значения.

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

// on its startup (Simple trigger) it runs the onOpen function that creates a custom menu and adds a menu item that when clicked runs the function "appendValuestoSheet"
function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu("My Custom Menu")
  .addItem("Calculate Values", "appendValuestoSheet")
  .addToUi();
}

function appendValuestoSheet(){
  var ss = SpreadsheetApp.getActiveSpreadsheet(); // get the current open sheet
  var fontWeights = []; // empty array to be filled with formatting strings (Its size will be based on the newData array size
  var newData = [
      ["Place1", "Service1", "Service2"],
      ["Place1", "Service1", "Service2"]
    ];

  // iterate the new values to add to sheet
  newData.forEach(function(row,rowIndex){
    var newFontWeightsRow, fontWeight;

    // Set bold format only to the first row
    if(rowIndex === 0){
      fontWeight = "bold";
    } else {
      fontWeight = "normal";
    }
    // buids a new row with the formats, in this case only the first row will be bold;
    newFontWeightsRow = row.map(function(){return fontWeight});

    // push the new formats row to the array;
    fontWeights.push(newFontWeightsRow);
  });

   // "fontWeights" array has the same size as "newData" array
  ss.getSheetByName("newDataTab")
    .getRange(1, 1, newData.length, newData[0].length) // adds data starting on the first row and col;
    .setFontWeights(fontWeights) // sets the new formats to the range
    .setValues(newData); // sets the new data to the range
}
person LeandroP    schedule 21.11.2019
comment
Спасибо за ответ и невероятно быстрый ответ. Также спасибо за обходной путь, но в моем случае это не сработает, думаю, мне просто придется разобраться с этим, как есть. - person Baraka; 21.11.2019
comment
Если кто-то столкнется с этой проблемой, поддержите этот запрос функции: issueetracker.google.com/issues/145501368 - person Baraka; 03.12.2019