Google Script: как найти и обновить всю строку - PullRequest
0 голосов
/ 23 января 2019

Я искал способ проверить, присутствует ли диапазон.Если это новая запись, она будет добавлена ​​как последняя строка, если нет, обновит существующую строку.

function Submit() {

 var ss =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Placeholder'); 

 var range = ss.getRange('A2:AS2'); 

/*
The string to Test is if C2 from place holder sheet is
already present on the Master Sheet at C column 
*/

 var data = range.getValues();

 var ts =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Master'); 

 ts.getRange(ts.getLastRow() + 1, 1, 1, 45).setValues(data); //you will need to define the size of the copied data see getRange()

 Clearfunc();

 SpreadsheetApp.getUi().alert('Submitted');

}

Ответы [ 2 ]

0 голосов
/ 24 января 2019

удалось выяснить ответ

function Update(){
  var ss =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Placeholder'); 
  var range = ss.getRange('A2:AS2')
  var data = range.getValues();
  var Key = ss.getRange('C2').getValue(); 
  var ts =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Master'); 
  var datarange = ts.getRange('C1:C');
  var datavalues = datarange.getValues(); 

  for (var r=0; r<=datavalues.length; r++) 
  { 
     var ss =  SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Placeholder'); 
     var Key = ss.getRange('C2').getValue();    
    if(datavalues[r] == Key)
       {ts.getRange(r+1, 1,1,45).setValues(data);}
  }
Clearlookupfunc();
SpreadsheetApp.getUi().alert('Update Submitted');
}
0 голосов
/ 23 января 2019

Вы можете прочитать значения мастер-листа и перебрать значения, чтобы определить, какая строка (индекс) содержит одно и то же значение.Если у вас есть индекс, вы можете обновить этот диапазон новыми данными.

Он должен выглядеть примерно так:

// get values
var masterSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Master');
var masterData = masterSheet.getDataRange().getValues();
var updateIndex;

// loop through master data to find the correct index
masterData.some(function (row, idx) {
  // check column c equals new data column c
  // data[0] because is multidimensional
  if(row[2] === data[0][2]) {
    updateIndex = idx;
    return updateIndex;
  }
});

// in case updateIndex is set we should update the data else it is a new record
if(updateIndex !== undefined) {
  masterSheet.getRange(updateIndex, 1, 1, data[0].length).setValues(data);
}

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