onEdit仅运行脚本的一半

时间:2020-05-22 10:31:41

标签: if-statement google-apps-script google-sheets triggers

我需要使用一个脚本,将数据从一张纸发送到另一张纸,并在写入特定单元格后清除值。

我尝试过onEdit,它会清除值,但不会在第二张纸中插入它们。这是我到目前为止的代码:

function onEdit(e) {

if (e.range.getA1Notation() == "F6"){

//Copiar los datos originales 
var ss1 = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet1 = ss1.getSheetByName("Hoja 1"); 
var A = sheet1.getRange("B5").getValues();
var B = sheet1.getRange("F5").getValues();
var C = sheet1.getRange("A8:F22").getValues();

//Borrar valores de la hoja de origen después de copiar

var borrar = sheet1.getRange("B5").clearContent();
var borrar = sheet1.getRange("F6").clearContent();
var borrar = sheet1.getRange("A8:F22").clearContent();

//Spreadsheet en la que voy a copiar lo anterior 

var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1zF84h_gR0zHPqwobYyuOQlo50L2ktpZr2e4orMNtqE8/edit#gid=382646794'); 
var sheet = ss.getSheetByName("PEDIDOS SIN ORDENAR"); 
var lastRow = sheet.getLastRow() + 1; 

//Insertar los valores 
var destRange = sheet.getRange(lastRow, 1, A.length, A[0].length).setValues(A);
var destRange = sheet.getRange(lastRow, 2, B.length, B[0].length).setValues(B);
var destRange = sheet.getRange(lastRow, 3, C.length, C[0].length).setValues(C);


}}

如果我更改代码的名称并且不将其限制为F6单元格的内容,那么代码将完全运行。因此,我尝试使用一个按钮,该按钮在PC上可以正常工作,但我需要它也可以在移动设备上使用,并且按钮不适用于Android。

我最后一次尝试是:

function Enviar() {

//if (e.range.getA1Notation() == "F6"){

//Copiar los datos originales 
var ss1 = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet1 = ss1.getSheetByName("Hoja 1"); 
var A = sheet1.getRange("B5").getValues();
var B = sheet1.getRange("F5").getValues();
var C = sheet1.getRange("A8:F22").getValues();

//Borrar valores de la hoja de origen después de copiar

var borrar = sheet1.getRange("B5").clearContent();
var borrar = sheet1.getRange("F6").clearContent();
var borrar = sheet1.getRange("A8:F22").clearContent();

var D = sheet1.getRange("F6").getValues()
if (D == "SI"){
//Spreadsheet en la que voy a copiar lo anterior 

var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1zF84h_gR0zHPqwobYyuOQlo50L2ktpZr2e4orMNtqE8/edit#gid=382646794'); 
var sheet = ss.getSheetByName("PEDIDOS SIN ORDENAR"); 
var lastRow = sheet.getLastRow() + 1; 

//Insertar los valores 
var destRange = sheet.getRange(lastRow, 1, A.length, A[0].length).setValues(A);
var destRange = sheet.getRange(lastRow, 2, B.length, B[0].length).setValues(B);
var destRange = sheet.getRange(lastRow, 3, C.length, C[0].length).setValues(C);


}}

这最后一次尝试似乎什么都没做。 我的尝试都没有显示错误,脚本运行了,但是没有给出预期的结果。

我不知道还能做什么。请帮助我。

1 个答案:

答案 0 :(得分:0)

function Enviar(e) {
  //Currently this function runs for any edit of any sheet you should consider limiting it to only the sheet and cell range that you desire
  var ss1=SpreadsheetApp.getActiveSpreadsheet(); 
  var sh1=e.source.getSheetByName("Hoja 1"); 
  var A=sh1.getRange("B5").getValue();//single value
  var B=sh1.getRange("F5").getValue();//single value
  var C=sh1.getRange("A8:F22").getValues();//2D array
  var borrar=sh1.getRange("B5").clearContent();
  var borrar=sh1.getRange("F6").clearContent();
  var borrar=sh1.getRange("A8:F22").clearContent();
  var D=sh1.getRange("F6").getValue()
  if (D=="SI"){
    var ss=SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1zF84h_gR0zHPqwobYyuOQlo50L2ktpZr2e4orMNtqE8/edit#gid=382646794'); 
    var sh=ss.getSheetByName("PEDIDOS SIN ORDENAR"); 
    var lastRow=sh.getLastRow() + 1; 
    var destRange=sh.getRange(lastRow,1).setValue(A);//single value
    var destRange=sh.getRange(lastRow,2).setValue(B);//single value
    var destRange=sh.getRange(lastRow, 3,C.length,C[0].length).setValues(C);//2D array    
  }
}