Попытка изменить формулу указанной ячейки при редактировании другой указанной ячейки - PullRequest
1 голос
/ 09 июля 2019

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

Я действительно новичок в этом,поэтому точно не знаю, что я делаю.

function onEdit(e) {

var sheet = SpreadsheetApp.getActiveSpreadsheet();
if(sheet.getName() === 'Date Calculator' && e.sheet.getRange() === 'C9' ) 
{
var cell = sheet.getRange("C10");
cell.setFormula('=WORKDAY(C9,+$C$3)');

    }
}

Ничего не происходит, ошибок нет.

[19-07-09 16:13:10:402 BST] SpreadsheetApp.getActiveRange() [0 seconds]
[19-07-09 16:13:10:402 BST] Range.getRow() [0 seconds]
[19-07-09 16:13:10:402 BST] Range.getLastRow() [0 seconds]
[19-07-09 16:13:10:402 BST] Range.getColumn() [0 seconds]
[19-07-09 16:13:10:402 BST] Range.getLastColumn() [0 seconds]
[19-07-09 16:13:10:402 BST] SpreadsheetApp.getActiveSpreadsheet() [0 seconds]
[19-07-09 16:13:10:414 BST] Starting execution
[19-07-09 16:13:10:420 BST] Spreadsheet.getActiveSheet() [0 seconds]
[19-07-09 16:13:10:488 BST] Execution failed: ReferenceError: "sheet" is not defined. (line 4, file "Code") [0.002 seconds total runtime]

1 Ответ

1 голос
/ 09 июля 2019

Проблема:

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

Кроме того, e.sheet.getRange() невозможно, вы должны использовать e.range.getA1Notation(), чтобы вернуть 'C9', как вы ожидаете.


Решение:

Ваш код должен выглядеть примерно так:

function onEdit(e) {

  var sh = e.source.getActiveSheet();
  if(sh.getName() === 'Date Calculator' && e.range.getA1Notation() === 'C9' ) 
  {
    var cell = sh.getRange("C10");
    cell.setFormula('=WORKDAY(C9,+$C$3)');
  }
}

Ссылки:

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