Как использовать .setFormula для вставки формулы, которая имеет относительные ссылки в vlookup? - PullRequest
0 голосов
/ 26 марта 2019

Я использую следующий скрипт, чтобы: 1. Скопировать данные с другого листа (это работает!) 2. Вставить три формулы бок о бок (Работает!) 3. Сделать ссылки на ячейки в формуле относительными, чтобыкогда он находится в строке 2, он ссылается на I2, в строке 3 он ссылается на I3 и т. д. (не работает)

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

Я не программист, и большая часть этого написана полезными людьми из StackOverflow.Мне нужно, чтобы ссылка I относилась к строке, в которой она находится, и ссылка A делала то же самое.

function CopyDataToNewFile2() {
  const source = SpreadsheetApp.openById('1WYXp-S5XoegSnzzC9uRao8uPCyJ6UxNQgOGf3c7DQO0').getSheetByName('Outcome'); // sss = source spreadsheet

  const destination= SpreadsheetApp.openById('1sX6VTyedVLBL57EMSuD7cqUwe9GzoCRajLZhA1ZBJ3Q');
  const target = destination.getSheetByName('Final');
  if (!source || !target)
    throw new Error("Missing required worksheets (sheet names not found)");

const dataToCopy = source.getDataRange().getValues();

   dataToCopy.shift(); // remove header row.
  const startRow = target.getLastRow() + 1;
  const numRows = dataToCopy.length;
  const numColumns = dataToCopy[0].length;
  target
    .getRange(startRow, 1, numRows, numColumns)
    .setValues(dataToCopy)
    .offset(0, numColumns, numRows, 1) // offset is from the top-right cell of the range
    .setFormula('=vlookup($I2,IMPORTRANGE("https://docs.google.com/spreadsheets/d/1f7_unFqRkI6O2EHBLsNGLRCH5j9rlEXBdVnRLTgS_lM/edit#gid=1203869430","Source_Hours!A:B"),2,false)/$A2')
  .offset(0,1,numRows,1)
  .setFormula('=vlookup($I2,IMPORTRANGE("https://docs.google.com/spreadsheets/d/1f7_unFqRkI6O2EHBLsNGLRCH5j9rlEXBdVnRLTgS_lM/edit#gid=1203869430","Copy of Other Time Not Included in WLI%!A:B"),2,false)')
  .offset(0,1,numRows,1)
  .setFormula('=sum($AO2,$AN2)');



}

Если копируется 172 строки данных, первый цикл копирования будет точным.После того, как я скопировал еще 172 строки, снова запустив скрипт, он все еще ссылается только на I2-I172 и A2-A172.Любая помощь будет оценена!

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