Google apps script 使用C列中最后一个非空行的拖动函数自动填充空数组
我想在谷歌表单中使用应用程序脚本实现自动填充功能。在Cala和Col B中有更多的数据,所以我想得到C列中最后一个非空单元格,然后用拖拽函数从最后的非空行到末尾自动填充空白空间。通过C列,我理解C列中所有列的末尾都有数据(C、D、E、F…),下面是一些代码Google apps script 使用C列中最后一个非空行的拖动函数自动填充空数组,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我想在谷歌表单中使用应用程序脚本实现自动填充功能。在Cala和Col B中有更多的数据,所以我想得到C列中最后一个非空单元格,然后用拖拽函数从最后的非空行到末尾自动填充空白空间。通过C列,我理解C列中所有列的末尾都有数据(C、D、E、F…),下面是一些代码 function autofill() { var LastRow = ss.getLastRow(); for(u=4; u <= LastRow; u++){ var CheckIfEmpty = ss.getRan
function autofill() {
var LastRow = ss.getLastRow();
for(u=4; u <= LastRow; u++){
var CheckIfEmpty = ss.getRange(u, 3).getValues();
if (CheckIfEmpty == "") {
return u;
Logger.log(u);
}
}
}
函数自动填充(){
var LastRow=ss.getLastRow();
对于(u=4;u自动填充对话框
function runMe() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var html='<html><head>';
html+='<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>';
html+='<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">';
html+='<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>';
html+='<style>input{margin:5px 5px 5px 0;}</style>';
html+='</head><body>';
html+='<input type="text" id="src" placeholder="Select Source Range" size="50" /><input type="button" value="Get Source Range" onClick="getSrcRange();" />';
html+='<br /><input type="text" id="des" placeholder="Select Destination Range" size="50" /><input type="button" value="Get Destination Range" onClick="getDesRange();" />';
html+='<br /><input type="button" value="Execute" onClick="execute();" />';
html+='<script>';
html+='function getSrcRange(){google.script.run.withSuccessHandler(function(obj){$("#src").val(obj.range);}).getActiveRange();}';
html+='function getDesRange(){google.script.run.withSuccessHandler(function(obj){$("#des").val(obj.range);}).getActiveRange();}';
html+='function execute(){var src=$("#src").val();var des=$("#des").val();google.script.run.execute({src:src,des:des});}';
html+='</script>';
html+='</body></html>';
var userInterface=HtmlService.createHtmlOutput(html).setWidth(800);
SpreadsheetApp.getUi().showModelessDialog(userInterface, "AutoFill");
}
function getActiveRange() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
return {range:rg.getA1Notation()};
}
function execute(obj) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
sh.getRange(obj.src).autoFill(sh.getRange(obj.des),SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
}
函数runMe(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var html='';
html+='';
html+='';
html+='';
html+=“输入{margin:5px 5px 5px 0;}”;
html+='';
html+='';
html+='
';
html+='
';
html+='';
html+=“函数getSrcRange(){google.script.run.withSuccessHandler(函数(obj){$(“#src”).val(obj.range);}).getActiveRange();}”;
html+='function getDesRange(){google.script.run.withSuccessHandler(function(obj){$(“#des”).val(obj.range);}.getActiveRange();}';
html+='function execute(){var src=$(“#src”).val();var des=$(“#des”).val();google.script.run.execute({src:src,des:des});}”;
html+='';
html+='';
var userInterface=HtmlService.createHtmlOutput(html).setWidth(800);
SpreadsheetApp.getUi().showModelessDialog(用户界面,“自动填充”);
}
函数getActiveRange(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
返回{range:rg.getA1Notation()};
}
函数执行(obj){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
sh.getRange(obj.src).autoFill(sh.getRange(obj.des),SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
}
我不相信有任何拖动触发器,但这是一种通过对话框来实现的方法。如果您对始终使用相同的范围进行拖动感兴趣,则只需单击按钮即可实现。自动填充对话框
function runMe() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var html='<html><head>';
html+='<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>';
html+='<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">';
html+='<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>';
html+='<style>input{margin:5px 5px 5px 0;}</style>';
html+='</head><body>';
html+='<input type="text" id="src" placeholder="Select Source Range" size="50" /><input type="button" value="Get Source Range" onClick="getSrcRange();" />';
html+='<br /><input type="text" id="des" placeholder="Select Destination Range" size="50" /><input type="button" value="Get Destination Range" onClick="getDesRange();" />';
html+='<br /><input type="button" value="Execute" onClick="execute();" />';
html+='<script>';
html+='function getSrcRange(){google.script.run.withSuccessHandler(function(obj){$("#src").val(obj.range);}).getActiveRange();}';
html+='function getDesRange(){google.script.run.withSuccessHandler(function(obj){$("#des").val(obj.range);}).getActiveRange();}';
html+='function execute(){var src=$("#src").val();var des=$("#des").val();google.script.run.execute({src:src,des:des});}';
html+='</script>';
html+='</body></html>';
var userInterface=HtmlService.createHtmlOutput(html).setWidth(800);
SpreadsheetApp.getUi().showModelessDialog(userInterface, "AutoFill");
}
function getActiveRange() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
return {range:rg.getA1Notation()};
}
function execute(obj) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
sh.getRange(obj.src).autoFill(sh.getRange(obj.des),SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
}
函数runMe(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var html='';
html+='';
html+='';
html+='';
html+=“输入{margin:5px 5px 5px 0;}”;
html+='';
html+='';
html+='
';
html+='
';
html+='';
html+=“函数getSrcRange(){google.script.run.withSuccessHandler(函数(obj){$(“#src”).val(obj.range);}).getActiveRange();}”;
html+='function getDesRange(){google.script.run.withSuccessHandler(function(obj){$(“#des”).val(obj.range);}.getActiveRange();}';
html+='function execute(){var src=$(“#src”).val();var des=$(“#des”).val();google.script.run.execute({src:src,des:des});}”;
html+='';
html+='';
var userInterface=HtmlService.createHtmlOutput(html).setWidth(800);
SpreadsheetApp.getUi().showModelessDialog(用户界面,“自动填充”);
}
函数getActiveRange(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
返回{range:rg.getA1Notation()};
}
函数执行(obj){
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
sh.getRange(obj.src).autoFill(sh.getRange(obj.des),SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
}
我不相信有任何拖动触发器,但这是一种通过对话框来实现的方法。如果您对始终使用相同的范围进行操作感兴趣,则只需单击按钮即可实现。在返回
日志记录步骤Logger.log(u)之后
我想没有太多意义。实际上,使用Logger,我想检查“u”是否返回C列中最后一个非空行,但它不是这样工作的“拖动函数”是什么意思?你能分享一个例子吗?我的意思是,如果我在C2中有一个例子函数,并且想要在C3、C4、C5等中使用相对单元格,我会向下拖动这个函数。如果我在宏脚本上执行此操作,会返回这样的代码:spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('E6:E9'),SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);在return
之后,日志记录步骤Logger.log(u)
没有太大意义,我想。实际上,对于Logger,我想检查“u”是否返回C列中最后一个非空行,但它不是这样工作的“拖动函数”是什么意思?你能分享一个例子吗?我的意思是,如果我在C2中有一个例子函数,并且想要在C3、C4、C5等相对单元格中也有这个函数,我会向下拖动这个函数。如果我在宏脚本上执行这个操作,会返回这样的代码:电子表格.getActiveRange().autoFill(电子表格.getRange('E6:E9'),电子表格应用程序.AutoFillSeries.DEFAULT_SERIES);