переносить данные между различными таблицами googleSpreadSheets - PullRequest
1 голос
/ 21 октября 2019

/* 
 **** Move a row onEdit determined by a specific Cell value***
 */
 
// Names of sheets
var sourceSheet = "datasource"
var destinationSheet = "datadestiny"
 
/* col: the column to watch,  
 * changeVal: what value you want to change,
 * del: do you want to delete after the change?
 */
var check = {
  "col":22,
  "changeVal": "OK",
  "del": true
  };
 
/* What you want to paste into the other sheet.
 * start: start column
 * cols: how many columns you want to copy
 */
var pasteRange = {
  "start": 1, 
  "cols": 2
  };
 
 
function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet()
  
  if(sheet.getName() === sourceSheet){
    
    //Get active cell
    var cell = sheet.getActiveCell();
    var cellCol = cell.getColumn();
    var cellRow = cell.getRow(); 
    
    if(cellCol === check.col){
      if(cell.getValue() === check.changeVal){
        
        //Select the range you want to export
        var exportRange = sheet.getRange(cellRow,pasteRange.start,1,pasteRange.cols);
        
        
        //Select the past destination
        var dest = SpreadsheetApp.openById('1sMenz31IMkCsa20ORue09EVMKyNujHCqgnM6C5HD_yo');

        var pasteDestination = dest.getSheetByName(destinationSheet);
        var pasteEmptyBottomRow = pasteDestination.getLastRow() + 1;
       
        //Copy the row to the new destination
        exportRange.copyTo(pasteDestination.getRange(pasteEmptyBottomRow,1),
                           SpreadsheetApp.CopyPasteType.PASTE_VALUES);
        

        //If delete is true delete after copying
        if(check.del){
          sheet.deleteRow(cellRow);
        };
      };
    };
  };
 };

Мне нужна помощь, я пытаюсь перенести данные из одной электронной таблицы в другую электронную таблицу googleSpreadSheets

электронная таблица - источник - https://docs.google.com/spreadsheets/d/1ki_EKHYVifJzm3pWnSs_GlnJPrIzN2bEZHQmexPgF_M/edit#gid=0

электронная таблица - судьба - https://docs.google.com/spreadsheets/d/1sMenz31IMkCsa20ORue09EVMKyNujHCqgnM6C5HD_yo/edit#gid=0

функция onEdit () не может передавать данные.

1 Ответ

0 голосов
/ 22 октября 2019

Попробуйте это так:

Первая проблема заключается в том, что вам нужен устанавливаемый триггер. Вы можете создать его вручную или с помощью программного обеспечения. Твой выбор. Вторая проблема заключается в том, что копия работает только в той же электронной таблице. Таким образом, вы можете использовать getValues ​​() и setValues ​​() вместо этого, как я сделал ниже:

function testonEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()=='datasource') {
    if(e.range.columnStart==22 && e.value=="OK"){
      var dss=SpreadsheetApp.openById('11f9yyZZs5Ret6YoXinvne0eCXWWaXdj12t6MnrT43vM');
      var dsh=dss.getSheetByName('datadestiny');
      var v=sh.getRange(e.range.rowStart,1,1,2).getValues();
      dsh.getRange(dsh.getLastRow(),1,v.length,v[0].length).setValues(v);
      sh.deleteRow(e.range.rowStart);
    }
  }
}

Я немного изменил код в соответствии с моим тестированием. Я стараюсь поддерживать функции onEdit () как можно более легкими, потому что вы хотите, чтобы они были максимально быстрыми, потому что у вас есть только 30 секунд, чтобы выполнить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...