google sheet onedit特定单元格

时间:2017-07-02 02:45:25

标签: javascript google-sheets

在google工作表中,我想在编辑正在复制的工作表中的特定单元格后将数据从一个工作表复制到另一个工作表。除了仅由特定单元格触发之外,我的代码可以执行我想要的操作。谁能告诉我我失踪了什么?

function OnEdit(e) {


 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var destination = SpreadsheetApp.openById("1P6gj2UwfRmSMYZ4LBovvqbqy88aluOysPqWWhWbw_VE") 
 var source_sheet = ss.getSheetByName("Submit");
 var destination_sheet = destination.getSheetByName("Point Tracker");
 var source_range = source_sheet.getRange("A2:C2"); 
 var editedcell = source_sheet.getRange("C2"); 


 if(editedcell.getValue() !== 0){   

 var last_row = destination_sheet.getLastRow();
 destination_sheet.insertRowAfter(last_row);
 var destination_range = destination_sheet.getRange("A"+(last_row+1)+":C"+(last_row+1));
 source_range.copyTo(destination_range,{contentsOnly:true}); 
 source_sheet.getRange("C2").setValue("");

  }
}

2 个答案:

答案 0 :(得分:1)

看看是否有效

function onEdit(e) {

if (e.source.getActiveSheet().getName() !== "Submit" || 
    e.range.getA1Notation() != 'C2' || typeof e.value == 'object') return;
SpreadsheetApp.openById("1P6gj2UwfRmSMYZ4LBovvqbqy88aluOysPqWWhWbw_VE")
  .getSheetByName('Point Tracker')
  .appendRow(e.range.offset(0, -2, 1, 3)
  .getValues()[0]);
e.range.setValue(null);
}

注意:此脚本使用事件对象。不要通过脚本编辑器中的播放按钮来测试脚本。而是编辑acual单元格,看它是否有效。

答案 1 :(得分:0)

我认为这可能有效。我通常需要调试这些东西,但希望我能让你更接近。

function copyOnTrigger(e) 
{
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var destination = SpreadsheetApp.openById("1P6gj2UwfRmSMYZ4LBovvqbqy88aluOysPqWWhWbw_VE") 
 var source_sheet = ss.getSheetByName("Submit");
 var destination_sheet = destination.getSheetByName("Point Tracker");
 var source_range = source_sheet.getRange("A2:C2"); 
 var editedcell = source_sheet.getRange("C2"); 
 var cell=e.range.getCell(1,1).getA1Notation();


 if(cell=='C2' && e.value != 0){   

 var last_row = destination_sheet.getLastRow();
 destination_sheet.insertRowAfter(last_row);
 var destination_range = destination_sheet.getRange("A"+(last_row+1)+":C"+(last_row+1));
 source_range.copyTo(destination_range,{contentsOnly:true}); 
 source_sheet.getRange("C2").setValue("");

  }
}