#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
, массив, который у вас есть, представляет собой массив элементов формы?