繁体   English   中英

将活动行从一个工作表复制到另一个Google工作表

[英]copy active row From one sheet to another google sheets

我在将单行复制到带有Google表格的第二张表格时遇到问题。

我正在使用Google脚本编辑器发送自动的电子邮件更新,效果很好。 但是,我现在正尝试记录特定列中的每个更新。 我需要该行中的所有信息才能与被编辑的单元格一起移动。

每行是一个单独的作业站点,我一次最多可以同时运行30个并发作业站点。 因此更新可能会出现在单元格“ M3”或“ M28”中

我想做的是仅捕获已编辑的行,而不捕获整个工作表。 我当前的代码正在复制整个工作表。 我在如何仅将单行定义为活动并将其设置为范围上画了一个空白。

这就是我所拥有的。 我不是Java脚本程序员,但是搜索该站点已经使我走到了这一步。 裸露的代码并不完美。

    function sendupdate() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    var cell = ss.getActiveCell().getA1Notation();
    var row = sheet.getActiveRange().getRow();
    var cellvalue = ss.getActiveCell().getValue().toString();
    var recipients = '';
    var message = '';
    var techname = '';
    var branchname = '';
    var city = '';
    var state = '';
    var technumber = '';

    if(cell.indexOf('M')!=-1){ 
    message = sheet.getRange('B'+     sheet.getActiveCell().getRowIndex()).getValue()
    techname = sheet.getRange('N'+ sheet.getActiveCell().getRowIndex()).getValue()  
    branchname = sheet.getRange('H'+ sheet.getActiveCell().getRowIndex()).getValue()
    city = sheet.getRange('J'+ sheet.getActiveCell().getRowIndex()).getValue() 
    state = sheet.getRange('K'+ sheet.getActiveCell().getRowIndex()).getValue() 
    recipients = "(emailaddress";
    var subject = ' Update: ' +techname + '  ' + message + '  ' + city + ' ' + branchname +' ' ;
    var body =  ': ' + message + ' Technician: « ' + techname + ' » New Update: « ' + cellvalue + ' » has been posted to the  Update Sheet Visit ' + ss.getUrl() + ' to view the changes on row: ' + row + '';
    MailApp.sendEmail(recipients, subject, body);
    var target_sheet = ss.getSheetByName('Log')    
    var last_row = target_sheet.getLastRow();
    target_sheet.insertRowAfter(last_row);    
    sheet.getRange('A:P').copyTo(target_sheet.getRange('A'+(last_row+1)+':P'+(last_row+1)));
    }

    debugger

通过调用getRange(row, column, numRows )获取活动行的Range 然后,您可以使用该范围将其复制到其他工作表

这是我添加的代码,使其起作用

    var target_sheet = ss.getSheetByName('Log')    
    var last_row = target_sheet.getLastRow();
    var activeRow = sheet.getRange( row ,1, 1 ,16)
    target_sheet.insertRowAfter(last_row);    
    activeRow.copyTo(target_sheet.getRange('A'+(last_row+1)+':P'+(last_row+1)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM