Google apps script Google应用程序脚本getRanges返回一个包含单个范围的列表
我正在尝试获取谷歌应用程序脚本中选定单元格的范围,并将它们链接到一个Google apps script Google应用程序脚本getRanges返回一个包含单个范围的列表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在尝试获取谷歌应用程序脚本中选定单元格的范围,并将它们链接到一个HtmlOutput 我的电子表格中的一列有HTML输入。例如:你好,世界。这样做的目的是简单地提供一个漂亮的HTML预览 我的用例是,用户通过拖动光标来选择一系列单元格(多行,同一列),然后预览所选行的内容 我正在尝试使用以下代码执行此操作: function previewModal() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var ranges =
HtmlOutput
我的电子表格中的一列有HTML输入。例如:你好,世界
。这样做的目的是简单地提供一个漂亮的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');
}
函数预览模式(){
var sheet=SpreadsheetApp.getActiveSpreadsheet();
变量范围=sheet.getActiveRangeList().getRanges();
var html=HtmlService.createHtmlOutput(“”);
对于(变量i=0;i”);
}
setWidth(1000)、setHeight(1000);
SpreadsheetApp.getUi().showModalDialog(html,“预览”);
}
然而,当我运行这个程序时,我看到ranges.length
等于1,无论我选择了多少个单元格。范围中包含的单元格是“活动”单元格->这是您第一次单击的单元格,然后再拖动以覆盖更多单元格。因此,我的HTML输出只包含1个单元格的值,而不是范围
我所说的“活动单元格”和“活动范围”是指:
到目前为止我所知道的:
按预期工作并返回单元格的整个“活动范围”。我知道这一点,因为我可以调用sheet.getActiveRangeList()
。清除
,然后看到选定的单元格范围被清除李>
失败->这应该返回一个范围对象数组:sheet.getActiveRangeList().getRanges()
,但该数组只有“活动单元格”Range[]
- 连续选择是单个
。使用范围
访问给定Range#getValues
范围的所有值
始终只返回左上角的值,即使Range#getValue()
范围中有多个单元格
function previewModal() { const sheet = SpreadsheetApp.getActiveSpreadsheet(), ranges = sheet.getActiveRangeList().getRanges(), htmlPrefix = "", html = ranges.reduce(function (rgSummary, rg) { var summary = rg .getValues() // 2D array .reduce(arrayToHtmlReduceCallback_, ""); return rgSummary + summary; }, htmlPrefix); const output = HtmlService.createHtmlOutput(html).setWidth(1000).setHeight(1000); SpreadsheetApp.getUi().showModalDialog(output, 'Preview'); } function arrayToHtmlReduceCallback_(acc, row, i, allArrayRows) { const rowSummary = row[0]; // Using only the content of the first column. return acc + '<div>' + rowSummary + '</div><hr>'; }
补充阅读:函数预览模式(){ const sheet=SpreadsheetApp.getActiveSpreadsheet(), 范围=sheet.getActiveRangeList().getRanges(), htmlPrefix=“”, html=范围.reduce(函数(rgSummary,rg){ var汇总=rg .getValues()//二维数组 .减少(arrayToHtmlReduceCallback?“”); 返回rgSummary+summary; },htmlPrefix); const output=HtmlService.createHtmlOutput(html).setWidth(1000).setHeight(1000); SpreadsheetApp.getUi().showModalDialog(输出“预览”); } 函数数组HTMLREDUCECALLBACK_uU8(acc、row、i、allArrayRows){ const rowSummary=行[0];//仅使用第一列的内容。 返回acc+''+rowSummary+'
'; }