Google apps script 如何从google sheets中的鼠标选择中获取范围,并将其作为范围传递给应用程序脚本函数?
理想情况下,除了电子表格本身之外,没有任何内容是通过URL硬编码的。 本着做事的精神 我想在GoogleSheets中选择一个gui,获取它的范围,将范围传递给一个函数来“做事情” 这是我到目前为止所拥有的 一个gui按钮来调用我的脚本Google apps script 如何从google sheets中的鼠标选择中获取范围,并将其作为范围传递给应用程序脚本函数?,google-apps-script,Google Apps Script,理想情况下,除了电子表格本身之外,没有任何内容是通过URL硬编码的。 本着做事的精神 我想在GoogleSheets中选择一个gui,获取它的范围,将范围传递给一个函数来“做事情” 这是我到目前为止所拥有的 一个gui按钮来调用我的脚本 function onOpen() { var ui = SpreadsheetApp.getUi(); // Or DocumentApp or FormApp. ui.createMenu('Run Script Menu') .ad
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Run Script Menu')
.addItem('Run Test function', 'run')
.addToUi();
}
用于捕获范围并将范围传递给另一个函数的函数
function run(){
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/myfullurl");
var sheet = ss.getSheetByName("some sheet name")
var range = sheet.getSelection().getActiveRange();
var ar = sheet.setActiveRange(range);
var rowData = getRowsData(sheet,ar,1);
}
这里是函数的“工作”硬编码版本例如函数rowData按预期返回
function run(){
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/myfullurl");
var sheet = ss.getSheetByName("some sheet name")
var range = sheet.getRange("A3:M3");
var ar = sheet.setActiveRange(range);
var rowData = getRowsData(sheet,ar,1);
}
这里是我尝试而不是硬编码的地方,只是我尝试传递给函数的范围
function run(){
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/myfullurl");
var sheet = ss.getSheetByName("some sheet name")
var range = sheet.getSelection().getActiveRange();
var ar = sheet.setActiveRange(range);
var rowData = getRowsData(sheet,ar,1);
}
然后我得到了错误
Specified range must be part of the sheet
不确定它是否有用,但getRowsData是此函数的一部分
这两个函数都是google脚本。将它们复制到脚本编辑器中的.gs文件中,然后运行getSelectRange()。它将启动一个无模式对话框。选择范围并单击按钮,范围将显示在文本框中
function getSelectRange() {
var html='<input type="text" id="selrg" /><br /><input type="button" value="Get Selected Range" onClick="getSelectedRange();" />';
html+='<script>function getSelectedRange(){google.script.run.withSuccessHandler(function(rg){document.getElementById("selrg").value=rg;}).getSelRange();}</script>';
var userInterface=HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Get Select Range');
}
function getSelRange() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
return rg.getA1Notation();
}
函数getSelectRange(){
var html=''; html+=“函数getSelectedRange(){google.script.run.withSuccessHandler(函数(rg){document.getElementById(“selrg”).value=rg;}).getSelRange();}”; var userInterface=HtmlService.createHtmlOutput(html); SpreadsheetApp.getUi().showModelessDialog(用户界面“获取选择范围”); } 函数getSelRange(){ var ss=SpreadsheetApp.getActive(); var sh=ss.getActiveSheet(); var rg=sh.getActiveRange(); 返回rg.getA1Notation(); }
这两个函数都是google脚本。将它们复制到脚本编辑器中的.gs文件中,然后运行getSelectRange()。它将启动一个无模式对话框。选择范围并单击按钮,范围将显示在文本框中
function getSelectRange() {
var html='<input type="text" id="selrg" /><br /><input type="button" value="Get Selected Range" onClick="getSelectedRange();" />';
html+='<script>function getSelectedRange(){google.script.run.withSuccessHandler(function(rg){document.getElementById("selrg").value=rg;}).getSelRange();}</script>';
var userInterface=HtmlService.createHtmlOutput(html);
SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Get Select Range');
}
function getSelRange() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
return rg.getA1Notation();
}
函数getSelectRange(){
var html=''; html+=“函数getSelectedRange(){google.script.run.withSuccessHandler(函数(rg){document.getElementById(“selrg”).value=rg;}).getSelRange();}”; var userInterface=HtmlService.createHtmlOutput(html); SpreadsheetApp.getUi().showModelessDialog(用户界面“获取选择范围”); } 函数getSelRange(){ var ss=SpreadsheetApp.getActive(); var sh=ss.getActiveSheet(); var rg=sh.getActiveRange(); 返回rg.getA1Notation(); }
使用无模式软件很容易做到这一点dialog@Cooper对不起,我不懂,请举个例子好吗?这很容易用无模式实现dialog@Cooper对不起,我不懂。请举个例子好吗?