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

时间:2016-09-18 23:36:13

标签: google-apps-script google-sheets

我无法使用google sheet将单行复制到第二张。

我使用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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

以下是我添加的代码,使其正常工作

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