Google脚本:如何在其他电子表格中查找活动单元格

时间:2019-06-30 10:41:45

标签: google-apps-script google-sheets-api

我在打开的Google工作表中有一个活动单元格。我在另一个电子表格中有一个宏,想要在另一个Google电子表格中获取目标活动单元格的值。当前,当我运行宏时,它是在目标工作簿中找到Sheet1,而不是活动工作表中。运行宏时如何找到活动工作表和活动单元格?

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 :(得分:0)

关于活动单元格,工作表等,脚本与Sheets UI没有直接关系,至少是您使用的是容器绑定电子表格,并且正在使用宏或附加组件运行脚本在电子表格用户界面中(据我所知,您正在这样做)。但是在这种情况下,您将只能使用容器绑定的电子表格上的活动单元格。

总而言之,函数getActiveSheet()和getActiveCell()只会为容器绑定的电子表格返回正确的值,在电子表格中运行脚本(宏或附加组件)并使用“ getActive ...”功能获取电子表格,表格或范围(而不是openById())[1]。例如:

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

在任何其他情况下,在您打开的电子表格上,它将始终返回第一张纸和第一张cel(A1)。至少您可以使用“ activate()”函数[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