Digital Farmer
Digital Farmer

Reputation: 2107

Faster way to copy a cell value and send it to another spreadsheet via script (Google Sheets)

I wonder if there is a more simplified and faster model to send the value of a cell to another spreadsheet.

My actual script:

  var sss = SpreadsheetApp.openById('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
  var ss = sss.getSheetByName('Valores por Vantagem');
  var range = ss.getRange('F1');
  var data = range.getValues();
  var tss = SpreadsheetApp.openById('BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB');
  var ts = tss.getSheetByName('Gerais');
  if(ts.getMaxRows() <= data.length) ts.insertRows(2, data.length);
  ts.getRange(268, 1, data.length, data[0].length).setValues(data);

Upvotes: 2

Views: 67

Answers (1)

Marios
Marios

Reputation: 27350

A more simplified solution would be the following.

  • Since you want to copy the value of a single cell, use SetValue instead of SetValues and change the range at the end:

    var data = range.getValues() => var data = range.getValue().

  • Also, replace:

    ts.getRange(268, 1, data.length, data[0].length).setValues(data)

    with: ts.getRange(268, 1).setValue(data).

    since data now is a single element.

  • Finally, you can get rid of if(ts.getMaxRows() <= data.length) ts.insertRows(2, data.length).


Solution:

function myFunction(){

var sss = SpreadsheetApp.openById('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA');
  var ss = sss.getSheetByName('Valores por Vantagem');
  var range = ss.getRange('F1');
  var data = range.getValue();
  var tss = SpreadsheetApp.openById('BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB');
  var ts = tss.getSheetByName('Gerais');      
  ts.getRange(268, 1).setValue(data);
}

Upvotes: 1

Related Questions