我对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(范围)
设置活动工作表的活动范围。
setActiveSelection(范围)
设置此工作表的活动选择区域。
但我无法找到任何信息,无论是使用其中一种,还是对代码或用户产生的影响。
答案 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行)。