首页 文章

如何使用Google表格中的App脚本自动复制/粘贴数据

提问于
浏览
0

我正在尝试使用App Scripts编写一些代码(通过每日触发器),将数据从单元格F13:G13复制/粘贴到第I列中的第一个空单元格 . 这是我的代码:

function TrackCurrentValues() 

      var spreadsheet = SpreadsheetApp.getActive();
      var sheet = spreadsheet.getSheets()[0];

      var lastRow = getLastRowInColumn(sheet, 'I:I');
      // Logger.log('I' + parseInt(lastRow + 1));

      var pasteRange = sheet.getRange('I' + parseInt(lastRow + 1) );
      pasteRange.activate();

      // now that we have the first empty cell in column I, paste the values we found from cells F13:G13
      spreadsheet.getRange('F13:G13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

    };

function getLastRowInColumn(sheetObj, range) {
   return sheetObj.getRange(range)
            .getValues().filter (String).length + 1
}

当它运行时,会发生的事情是从正确的位置复制数据,但它总是粘贴到单元格A1 . 此外,粘贴的数字以英镑英镑字符(£)为前缀 .

可能有什么不对?如果我手动运行它(通常) . 主要的是它没有找到I中的空单元格:I .

1 回答

  • 1

    这段代码应该做你想要的:

    function TrackCurrentValues(){
          var sheet = SpreadsheetApp.getActive().getSheets()[0];
          var lastRow = getLastRowInColumn(sheet, 'I:I');
          var pasteRange = sheet.getRange(lastRow + 1,9,1,2);   
          var copyRange = sheet.getRange(13,6,1,2)
          pasteRange.setValues(copyRange.getValues())
        };
    
    function getLastRowInColumn(sheetObj, range) {
       return sheetObj.getRange(range).getValues().filter(String).length
    }
    

    在你的字符问题上,该范围可能被格式化以显示该货币符号 . 要更新此选项,请选择范围,转到工具栏并选择“格式”>“数字”>“指定所需的格式”

    另外的想法:i)你将一个添加到lastRow变量两次(一次在getLastRowInCOlumn函数中,再次在pasteRange定义中)ii)我将重新命名不使用“活动范围”来存储位置,而是将该范围存储在变量中iii)它似乎你的副本范围是2列宽,但你的pasteRange只有1列宽

相关问题