setActiveSelection()和setActiveRange()有什么区别?

时间:2014-12-02 11:51:19

标签: google-apps-script google-sheets

我对Google Apps Scripts很陌生,我想知道设置有效范围和设置有效选择之间的区别。据我所知,虽然我可以设置活动范围或工作表中的活动选择,但我可以获取活动范围 ,但主动选择。还有一个Range类,它具有对范围进行操作的特定方法,但没有Selection类。

我使用了两种设定方法,

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
sheet.setActiveRange(sheet.getRange("B5:H20"));

sheet.setActiveSelection(sheet.getRange("B5:H20"));

但可以看到网络用户界面或行为没有区别。

Sheets类的Google Apps Scripts文档说:

  

setActiveRange(范围)

     

设置活动工作表的活动范围。

Reference

  

setActiveSelection(范围)

     

设置此工作表的活动选择区域。

Reference

但我无法找到任何信息,无论是使用其中一种,还是对代码或用户产生的影响。

2 个答案:

答案 0 :(得分:2)

也许这不是最有用的答案,但是这两种方法之间可能存在历史差异。为了使事情进一步复杂化,还有[range] .activate() - 这似乎只是完成同样事情的另一种方式。希望这会让你感到震惊,直到有更多了解GAS历史的人出现。

编辑:顺便说一句,我测试了所有三种方法,但我无法辨别出任何功能差异。

答案 1 :(得分:1)

这是一个老帖子,但我有同样的问题所以我认为我会分享我注意到的一个区别(因为当我交替使用setActiveRange()和setActiveSelection()时,它真的让我很困惑。) p>

setActiveRange()只接受输入范围,而setActiveSelection()可以接受范围或A1表示法字符串。

因此,如果您想将A1:D4范围内的单元格设置为活动状态,可以使用setActiveSelection写入:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

sheet.setActiveSelection("A1:D4");

OR

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:D4");
sheet.setActiveSelection(range);

使用setActiveRange时,您必须在第二个示例中编写额外的行:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var range = sheet.getRange("A1:D4");
sheet.setActiveRange(range);

(来自https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#setactiveselectionrange的代码)

这可能就是为什么他们保持setActiveSelection,因为它在某些情况下简化了事情(1行)。