У меня есть два сценария, которые отлично работают, но когда я их объединил, это не работает - PullRequest
0 голосов
/ 08 января 2019

Я хочу объединить два простых сценария, которые работают, но когда они объединены, это не работает. Кто-нибудь может сказать мне, почему?

Я не понимаю, что здесь произошло, может кто-нибудь объяснить мне или кто-нибудь сказать мне, как я могу объединить два сценария

function Script1() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).activate();
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).activate();
  spreadsheet.getCurrentCell().offset(0, 7).activate();
  spreadsheet.getCurrentCell().setFormulaR1C1('=edate(R[0]C[-3],1)');
  spreadsheet.getCurrentCell().offset(0, 1).activate();
  spreadsheet.getCurrentCell().setFormulaR1C1('=now()');
};



function Script2() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().offset(0, 1).activate();
  spreadsheet.getCurrentCell().offset(0, -2).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getCurrentCell().offset(0, 1).activate();
  spreadsheet.getCurrentCell().offset(0, -2).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};



function Combined() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).activate();
  spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.PREVIOUS).activate();
  spreadsheet.getCurrentCell().offset(0, 7).activate();
  spreadsheet.getCurrentCell().setFormulaR1C1('=edate(R[0]C[-3],1)');
  spreadsheet.getCurrentCell().offset(0, 1).activate();
  spreadsheet.getCurrentCell().setFormulaR1C1('=now()');


  spreadsheet.getCurrentCell().offset(0, 1).activate();
  spreadsheet.getCurrentCell().offset(0, -2).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getCurrentCell().offset(0, 1).activate();
  spreadsheet.getCurrentCell().offset(0, -2).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};  

1 Ответ

0 голосов
/ 08 января 2019

Сценарии получают текущую ячейку, затем используют activate(), которая изменяет текущую ячейку, поэтому «начальная точка» для второй части не совпадает с «начальной точкой» для первой части.

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