Estoy usando scripts de Google para acceder a una hoja de Google para presentar los datos de manera visual. La función a continuación funciona, sin embargo, está comenzando a fallar o funcionar lentamente debido a la cantidad de datos en la hoja de Google. Google está lanzando una advertencia Method Range.getValue is heavily used by the script..

¿Cómo se supone que voy a escribir esto?

function generateUsers() {
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rr = spreadSheet.getLastRow();

  var users = [];
  for (var i = 3; i <= rr; i++) {
    var firstName = spreadSheet.getRange(i, 1).getValue();
    var lastName = spreadSheet.getRange(i, 2).getValue();
    var phone = spreadSheet.getRange(i, 12).getValue();

    var user = {
      firstName: firstName,
      lastName: lastName,
      phone: phone
    };

    users.push(user);
  }
  return users; // Modified
}
2
bp123 24 sep. 2019 a las 03:23

1 respuesta

La mejor respuesta

¿Qué tal esta modificación? Piense en esto como solo una de varias respuestas.

Script modificado:

En esta modificación, al principio, todos los valores se recuperan de la hoja de cálculo. Y luego, user se crea a partir de los valores recuperados. Modifique su secuencia de comandos de la siguiente manera.

var users = [];
for (var i = 3; i <= rr; i++) {
  var firstName = spreadSheet.getRange(i, 1).getValue();
  var lastName = spreadSheet.getRange(i, 2).getValue();
  var phone = spreadSheet.getRange(i, 12).getValue();

  var user = {
    firstName: firstName,
    lastName: lastName,
    phone: phone
  };

  users.push(user);
}
var values = spreadSheet.getRange(3, 1, rr - 2, 12).getValues();
var users = values.map(function(row) {
  return {
    firstName: row[0],
    lastName: row[1],
    phone: row[11]
  };
});

Referencias:

Si este no fue el resultado que desea, me disculpo.

3
Tanaike 24 sep. 2019 a las 00:56