Стиль текста в заголовке текста Google script

#forms #google-apps-script #fonts

#формы #google-apps-script #шрифты

Вопрос:

Я написал приложение для автоматического обновления формы заказа каждый раз, когда передается заказ. В настоящее время форма состоит из N текстовых элементов, названия которых похожи:

Продукт (остатки: [количество оставшихся продуктов])

Описание продукта

Это выполняется следующими строками :

 var Products= wsStocks.getRange(1,1,wsStocks.getLastRow(),1).getValues();
var Description = wsStocks.getRange(1,2,wsStocks.getLastRow(),2).getValues();
var Qtys = wsStocks.getRange(1,3,wsStocks.getLastRow(),3).getValues();

for(j=0;j<Products.length;j  ){
       Items[j].setTitle( `${Products[j][0]} (remains: ${Qtys[j][0]})`  "n"  `${Description[j][0]}`;
};
  

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

Ответ №1:

Сначала вы должны получить значение Range каждого элемента из Items массива, а затем вы сможете изменить его в TextStyle соответствии с вашими потребностями, используя этот setTextStyle() метод.

Для настройки стилей текста вы можете создать свой собственный, что-то похожее на этот.

 // italic text style
var style1 = SpreadsheetApp.newTextStyle()
    .setFontSize(14)
    .setItalic(true)
    .build();

// small size text style
var style2 = var style = SpreadsheetApp.newTextStyle();
    .setFontSize(11)
    .build();
  

После этого для каждого элемента Items массива вы должны сделать это

 for(j = 0; j < Products.length; j  ) 
    sheet.getRange("RANGE_OF_Items[j]_ELEMENT").setTextStyle(style1); //or style2
  

Ссылка

Комментарии:

1. Спасибо. Это изменяет стиль ячеек электронной таблицы, но не изменяет текст, отображаемый в форме с помощью метода .setTitle(). Я попытался изменить getValues() на getTextRichValues(), но опять же, метод .setTitle() будет работать только со строкой, а использование .getText() приводит к потере информации о стиле…

2. О какой именно форме вы говорите? Более того, после того, как вы используете setTitle() , можете ли вы получить диапазон этого элемента, а затем применить setTextStyle() ?

3. Моя цель — иметь стилизованный текст в заголовке элемента TextItem формы. Как только заголовок установлен, getTitle() выдает строку, а не диапазон. Однако я вижу, что строка может иметь стиль и что стилизованную строку можно использовать в качестве аргумента в setTitle ; но я понятия не имею, как задать стиль строки. .bold() не подойдет, как и bold{} или .setBold(true) или .setFontWeight(«жирный»)…

4. Теперь я понимаю. Однако, если вы используете приложение FormsApp, даже если у вас есть TextItem, доступные методы находятся здесь , однако ни один из них не дает вам возможности изменить стиль текста. Итак, по сути Items , массив, который у вас есть, представляет собой массив элементов формы?