Google Sheets setUnderline (offsetBegin, offsetEnd)


Кто-нибудь знает способ подчеркнуть часть текста в ячейке Google Sheets? Я действительно ищу функцию, подобную моему названию этого запроса.

Я играл с ними .getDisplayValue,.getValue для класса Range и попытался увидеть, может ли класс Doc Text быть доступен из Google sheets без успеха. Я знаю, что могу сделать это непосредственно из Google Sheets, но мне нужна эта возможность из сценариев Google Apps (GAS).

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

Спасибо за любые возможные ответы.

Терри

3 3

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
}