Google apps script 使用C列中最后一个非空行的拖动函数自动填充空数组

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

我想在谷歌表单中使用应用程序脚本实现自动填充功能。在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.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);