Как изменить вывод из строкового значения в форматированное значение в Google Sheets Google App Script для этой функции? - PullRequest
0 голосов
/ 16 апреля 2020

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

Вот ссылка на документацию по сценарию приложения Google: https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells

function myFunction() {
  var ID = 781321575;
  var builder = new Builder('1HnP8F8Gy2Brjh1OCF_DI_EPk6t7ACsnLAJX6kLbErgk')
    .setValuesFromOrigin('J7, J8', ID, [1, 2, 3], [4, 5, 6])
    .setValuesFromOrigin('J9', ID, ['hey', 'there', 'how', 'are', 'you'])
    .setBackgroundColorsFromOrigin('J12', ID, ['#ffffff', '#bb0000'], ['#bb00bb'], ['#00ff00'])
    .setBackgroundColorsFromOrigin('J14', ID, ['#ff0000'])
    .setBackgroundColorsFromOrigin('J16', ID, ['#ff0000'])
    .setBackgroundColorsFromOrigin('J18', ID, ['#ff0000'])
  Logger.log(builder);
  builder.execute();
}

class Builder {
  constructor(id) {
    this.spreadsheetId = id;
    this.requests = [];
  }

  setBackgroundColorsFromOrigin(R1, sheetId, ...colors) {
    var rows = colors.map((value) => ({
      values: value.map(v => ({
        userEnteredFormat: {
          backgroundColor: {
            ...getRGBFromHex(v),
            alpha: 1
          }
        }
      }))
    }));
    this.requests.push({
      updateCells: {
        rows,
        fields: 'userEnteredFormat.backgroundColor',
        start: {
          sheetId,
          ...getIndexFromR1Notation(R1)
        }
      }
    });
    return this;
  }

  setValuesFromOrigin(R1, sheetId, ...values) {
    var rows = values.map((value) => ({
      values: value.map(v => ({
        userEnteredValue: {
          stringValue: v
        }
      }))
    }));
    this.requests.push({
      updateCells: {
        rows,
        fields: 'userEnteredValue.stringValue',
        start: {
          sheetId,
          ...getIndexFromR1Notation(R1)
        }
      }
    });
    return this;
  }

  execute() {
    return Sheets.Spreadsheets.batchUpdate({
      requests: this.requests
    }, this.spreadsheetId);
  }
}

Я относительно новичок в javascript, но вот что я пробовал :

setValuesFromOrigin(R1, sheetId, ...values) {
    var rows = values.map((value) => ({
      values: value.map(v => ({
        userEnteredValue: {
          stringValue: v.toString()
        },        
        formattedValue: v,
        userEnteredFormat: {
          stringValue: v.formattedValue
      }))
    }));
    this.requests.push({
      updateCells: {
        rows,
        fields: 'userEnteredValue.stringValue',
        fields: 'userEnteredFormat.stringValue',
        start: {
          sheetId,
          ...getIndexFromR1Notation(R1)
        }
      }
    });
    return this;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...