【发布时间】:2026-01-21 18:40:01
【问题描述】:
我正在尝试获取 Google Apps 脚本中选定单元格的范围并将它们链接到 HtmlOutput。
我的电子表格中的一列有 HTML 输入。例如:<p>Hello <em>World</em></p>。我们的想法是简单地提供一个很好的 HTML 预览。
我的用例是用户通过拖动光标来选择一系列单元格(多行,同一列),然后预览所选行的内容。
我正在尝试使用此代码:
function previewModal() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var ranges = sheet.getActiveRangeList().getRanges();
var html = HtmlService.createHtmlOutput('');
for (var i = 0; i < ranges.length; i++) {
var contentCell = ranges[i];
var htmlContent = contentCell.getValue();
html.append('<div>').append(htmlContent).append('</div>').append('<hr>');
}
html.setWidth(1000).setHeight(1000);
SpreadsheetApp.getUi().showModalDialog(html, 'Preview');
}
但是,当我运行它时,我看到 ranges.length 等于 1,无论我选择了多少个单元格。范围包含的单元格是“活动”单元格->这是您第一次单击的单元格,然后再拖动以覆盖更多单元格。结果,我的 HTML 输出只包含该 1 个单元格的值,而不是范围。
到目前为止我所知道的:
-
sheet.getActiveRangeList()按预期工作并返回单元格的整个“活动范围”。我知道这一点,因为我可以为此调用.clear并看到选定的单元格范围被清除! -
sheet.getActiveRangeList().getRanges()失败 -> 这应该返回一个 Range 对象数组:Range[],确实如此,但该数组只有“活动单元格”
【问题讨论】:
标签: google-apps-script google-sheets