Скрипты Google Sheets: как включить формулу в новую строку, которая ссылается на ячейки в этой новой строке? - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь написать скрипт, который добавит новую строку с формулой, которая ссылается на ячейки в этой новой строке.В новой строке столбец A будет временем начала, столбец B - временем окончания, а столбец C будет B - A, чтобы указать продолжительность.Я предполагаю, что это должно быть довольно просто для большинства людей, читающих это, но все посты, на которые я смотрел, пытаются достичь более сложных результатов, и я новичок в этом.Вот мой «псевдокод»:

function newRow() {

  var spreadsheet = SpreadsheetApp.getActive();
  var row1 = spreadsheet.getActiveCell().getRow(); // Gets the current row number
  spreadsheet.appendRow(['00:00:00','00:00:00', "=B(row1+1)-A(row1+1)" ]); // add the new row, filling column A & B with time place holders, then in column C calculate the difference between A & B of this new row.  

}

Буду благодарен за любые ответы, помощь, руководство или ссылку на то, где это было задано ранее (я просто не могу его найти).

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Листы имеют обозначение относительной формулы, которое можно использовать для ссылки на ячейки относительно той, в которую вы вставляете:

function newRow() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var formula = '=INDIRECT("R[0]C[-1]", FALSE)-INDIRECT("R[0]C[-2]",FALSE)';
  ss.appendRow(['00:00:00', '00:00:00', formula]);
}
0 голосов
/ 27 сентября 2019

Может быть, что-то вроде этого

function newRow() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var nextRow = sheet.getLastRow() + 1;
  var formula = Utilities.formatString('=B%s-A%s', nextRow, nextRow);
  sheet.appendRow(['00:00:00', '00:00:00', formula]);
}

Есть другой способ получить формулу

var formula = '=B%s-A%s'.replace(/%s/g, nextRow);

Я бы хотел оба.

...