Google apps script 使用For循环运行应用程序脚本-Google Sheets/Apps脚本

Google apps script 使用For循环运行应用程序脚本-Google Sheets/Apps脚本,google-apps-script,google-sheets,Google Apps Script,Google Sheets,每当它在N列中看到一个空白单元格时,我想用For循环重复一段代码 我正在尝试下面的代码,但无法找出哪里出了问题 function CopyCellBelow() { // Get array of values in the search Range var sheet = SpreadsheetApp.getActive(); var lastRow = sheet.getLastRow(); var searchRange = sheet.getRange(14,2, l

每当它在N列中看到一个空白单元格时,我想用For循环重复一段代码

我正在尝试下面的代码,但无法找出哪里出了问题

  function CopyCellBelow() {
  // Get array of values in the search Range
  var sheet = SpreadsheetApp.getActive();
  var lastRow = sheet.getLastRow();
  var searchRange = sheet.getRange(14,2, lastRow-1);
  var rangeValues = searchRange.getValues();

for ( j = 0 ; j < lastRow - 1; j++){
  if(rangeValues[j] === ""){
    sheet.getRange(j+14);// Column N
    
    sheet.getRange('N2').activate();
    sheet.getRange('N3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    sheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();
    sheet.getCurrentCell().offset(1, 0).activate();
    sheet.getCurrentCell().offset(1, 0).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    sheet.getRange('N2').activate();
    sheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();
    sheet.getCurrentCell().offset(1, 0).activate();
    sheet.getCurrentCell().offset(1, 0).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    sheet.getRange('N1').activate();
   
    
  }else if (rangeValues[j] === "if cell has data"){
    //do nothing    
   }}};
函数CopyCellBelow(){
//获取搜索范围中的值数组
var sheet=SpreadsheetApp.getActive();
var lastRow=sheet.getLastRow();
var searchRange=sheet.getRange(14,2,lastRow-1);
var rangeValues=searchRange.getValues();
对于(j=0;j
在下图中,您可以看到黄色单元格具有预期的结果,即直接复制下方的单元格

接下来的3个空白单元格中应放置4

看看这是否有帮助

const copyCellBelow = () => {

const sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1'); //change sheet name if needed
const range = sheet.getRange(1, 14, sheet.getLastRow(), 1); //change range if needed
const data = range.getValues().map( (cell, i, val) => (cell[0]) ? cell : val[i 
+ 1])
range.setValues(data);
}
看看这是否有帮助

const copyCellBelow = () => {

const sheet = SpreadsheetApp.getActive().getSheetByName('Sheet1'); //change sheet name if needed
const range = sheet.getRange(1, 14, sheet.getLastRow(), 1); //change range if needed
const data = range.getValues().map( (cell, i, val) => (cell[0]) ? cell : val[i 
+ 1])
range.setValues(data);
}

请重新阅读你的解释。您的文字与图像不符。您需要学习如何在不使用activate的情况下编写代码。这是缓慢和尴尬。嗨库珀-图像更新。很抱歉,我正在学习如何编写代码。非常感谢您的帮助。请重新阅读您的解释。您的文字与图像不符。您需要学习如何在不使用activate的情况下编写代码。这是缓慢和尴尬。嗨库珀-图像更新。抱歉,我正在学习如何编写代码。如果有任何帮助,我将不胜感激。如果可以的话,我有一个电子表格给你看。我无法访问那个电子表格。请修复权限(将其设置为“具有链接的任何人都可以编辑”)。非常抱歉-已更新您已将代码粘贴到另一个函数声明中。我修好了。你现在能再试一次吗?它似乎不起作用。如果可以的话,我有一个电子表格给你看。我无法访问那个电子表格。请修复权限(将其设置为“具有链接的任何人都可以编辑”)。非常抱歉-已更新您已将代码粘贴到另一个函数声明中。我修好了。你现在能再试一次吗?