Импорт данных с формулой из другого листа Google и удаление исходных данных - PullRequest
0 голосов
/ 08 октября 2018

Привет! Я использую следующий скрипт для импорта данных из другого Google Sheet, но он не приносит нужную мне формулу, я пробовал ImportRange, но кажется, что он просто синхронизирует два листа, и мне нужно удалитьДанные на исходном листе (Лист 1), но также удаляющие его на листе, который я купил (Основной Лист), есть еще один способ сделать это, заранее спасибо.

function Copy() {
  var sss = SpreadsheetApp.openById('Sheet 1 ID');
  var ss = sss.getSheetByName('results');
  var range = ss.getRange('2:688');
  var data = range.getValues();
  var tss = SpreadsheetApp.openById('Master Sheet ID');
  var ts = tss.getSheetByName('results');
  ts.getRange(ts.getLastRow() + 1, 1, data.length, data[0].length).setValues(
    data
  );
  var sheet = SpreadsheetApp.openById('Sheet 1 ID').getSheetByName('Roger');
  ss.getRange('2:688').clearContent();
}

1 Ответ

0 голосов
/ 08 октября 2018

Проблема:

  • Формулы не извлекаются с getValues()

Возможные решения:

  • Использование range#getFormulas и range#getValues и смешайте эти два массива, чтобы создать массив формул и значений для setValues() позже.
  • Используйте расширенные сервисы Google для доступа к API листов, чтобы напрямую получить соединение.

Примеры фрагментов сценария:

  var data = range.getValues();
  data = range.getFormulas().map(function(e, i) {//i=index of row(e)
    return e.map(function(f, j) {//j = index of column(f)
      return f === "" ? data[i][j] : f;
    });
  });

или

  var req = {
    ranges: 'results!2:688',
    valueRenderOption: 'FORMULA', //get formulas with values
  };
  var r = Sheets.Spreadsheets.Values.batchGet('Sheet 1 ID', req);
  data = r.valueRanges[0].values;

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...