【问题标题】:Use A For Loop to Run Apps Script - Google Sheets / Apps Script使用 For 循环运行 Apps 脚本 - Google 表格 / Apps 脚本
【发布时间】:2021-04-14 04:43:38
【问题描述】:

每次在第 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    
   }}};

在下图中,您可以看到黄色单元格具有预期的结果,即直接复制下面的单元格

接下来的 3 个空白单元格中应该有一个 4

【问题讨论】:

  • 请重读您的解释。你的话不符合你的形象。
  • 您需要学习如何在不使用激活的情况下编写代码。它缓慢而尴尬。
  • 嗨 Cooper - 图片已更新。抱歉,我正在学习如何编写代码,任何帮助将不胜感激

标签: google-apps-script google-sheets


【解决方案1】:

看看有没有帮助

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);
}

【讨论】:

  • JPV 它似乎不起作用。如果可以的话,我有一个电子表格供您查看。
  • 我无法访问该电子表格。请修复权限(将其设置为“知道链接的任何人都可以编辑”)。
  • 您将代码粘贴到另一个函数声明中。我修好了它。现在可以再试一次吗?
猜你喜欢
  • 2018-05-26
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多