Скрипт Google: как найти активную ячейку в другой таблице - PullRequest
0 голосов
/ 30 июня 2019

У меня есть активная ячейка в открытом листе Google. У меня есть макрос в другой электронной таблице, который хочет получить значение целевой активной ячейки в другой электронной таблице Google. В настоящее время, когда я запускаю макрос, он находит Лист1 в целевой книге, но не на активном листе. Как найти активный лист и активную ячейку при запуске макроса?

function getFormula() {
  //Precedents
  var ssThis=SpreadsheetApp.openById("1VMwjomfjtJLIQc<replaced>8J1zWx_GujXuCY");
  //Universal Demo - v5
  var tss = SpreadsheetApp.openById("1Pev8gCbl_Mn9JMJId<replaced>Cbc0aikBZambI");
  var targetSheet=tss.getActiveSheet();
  var targetSheetName=targetSheet.getName();
  Logger.log(targetSheetName);
  var cellThis=targetSheet.getActiveCell();
  var targetFormula=cellThis.getFormula();
  Logger.log(targetFormula);
  getPrecedents(targetFormula);

}

1 Ответ

0 голосов
/ 01 июля 2019

Скрипт не имеет прямого отношения к пользовательскому интерфейсу Sheets относительно активных ячеек, листов и т. Д., По крайней мере, если вы используете электронную таблицу с привязкой к контейнеру и запускаете скрипт с макросом или надстройкой внутри интерфейса электронных таблиц (насколько я понимаю, вы делаете). Но в этом случае вы сможете работать только с активными ячейками электронной таблицы, связанной с контейнером.

Подводя итог, функции getActiveSheet () и getActiveCell () будут возвращать только правильное значение для электронной таблицы с привязкой к контейнеру, запуская скрипт внутри электронной таблицы (макрос или надстройку) и используя функции «getActive ...» чтобы получить электронную таблицу, лист или диапазон (вместо openById ()) [1]. Например:

var ssThis = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet=ssThis.getActiveSheet();
var cellThis=activeSheet.getCurrentCell();

В любых других случаях в открываемой электронной таблице всегда будут возвращаться первый лист и первый celL (A1). По крайней мере, вы используете функцию «activ ()» [2] или «setActive…» [3], чтобы установить активную ячейку или лист, но для этого вам нужно знать активную ячейку.

[1] https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getactive

[2] https://developers.google.com/apps-script/reference/spreadsheet/range

[3] https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#setactiverangerange

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