Google Sheets setUnderline (offsetBegin, offsetEnd)
Кто-нибудь знает способ подчеркнуть часть текста в ячейке Google Sheets? Я действительно ищу функцию, подобную моему названию этого запроса.
Я играл с ними .getDisplayValue,.getValue для класса Range и попытался увидеть, может ли класс Doc Text быть доступен из Google sheets без успеха. Я знаю, что могу сделать это непосредственно из Google Sheets, но мне нужна эта возможность из сценариев Google Apps (GAS).
Я также знаю, что эта способность в фактический редактор электронных таблиц является новым и может быть, что сценарий приложения должен догнать.
Спасибо за любые возможные ответы.
Терри
3 ответа:
Попробуйте использовать нижеприведенную функцию для подчеркивания строки. К сожалению, Google Sheets, похоже,не поддерживает непрерывное подчеркивание.
function underline(string, start, end) { start = start || 0; end = end || string.length; var res = ""; for (var i=start; i < end; i++) { res += string.charAt(i) + "\u0332"; } return res.toString(); }
См. https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#CellData и https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets#TextFormatRun о том, как это сделать.
См.https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#RepeatCellRequest о том, как применить форматирование к нескольким ячейкам сразу, если это необходимо.
Лично я не пробовал TextFormatRun возможности, но в качестве более общего примера, вот как вы меняете цвет фона и переднего плана, выравнивание и смелость строки:
def sheets_batch_update(SHEET_ID,data): print ( ("Sheets: Batch update")) service.spreadsheets().batchUpdate(spreadsheetId=SHEET_ID,body=data).execute() #,valueInputOption='RAW' data={ "requests": [ #format header row { "repeatCell": { "range": { "sheetId": all_sheets['Users'], "startRowIndex": 0, "endRowIndex": 1 # "startColumnIndex": 0, # "endColumnIndex": 6 }, "cell": { "userEnteredFormat": { "backgroundColor": { "red": 0.4, "green": 0.4, "blue": 0.4 }, "horizontalAlignment" : "LEFT", "textFormat": { "foregroundColor": { "red": 1.0, "green": 1.0, "blue": 1.0 }, #"fontSize": 12, "bold": True } } }, "fields": "userEnteredFormat(backgroundColor,textFormat,horizontalAlignment)" } }, ] } sheets_batch_update(SHEET_ID, data)
Теперь вы можете установить нижние линии в Газе.
function underline(startOffset,endOffset){ startOffset = startOffset || 1; endOffset = endOffset || 3; var rng = SpreadsheetApp.getActiveSheet().getRange("A1"); var val = rng.getValue().toString(); var rich = SpreadsheetApp.newRichTextValue(); //new RichText rich.setText(val); //Set Text value in A1 to RichText var style = SpreadsheetApp.newTextStyle(); // Create a new text style style.setUnderline(true); var buildStyle = style.build(); rich.setTextStyle(startOffset,endOffset,buildStyle); // set this text style to the offset character range and save it to Rich text var format = rich.build() rng.setRichTextValue(format); //Set the final RichTextValue back to A1 }