# Google-sheets – Usage of GetValues

When searching for values in a table I am currently running a check on specific cells with the following code:

``````for (var i = 11; i < (lastrow+1); i++) {
var equip = sheet.getRange(i, 33).getValue();
var equip_name = sheet.getRange(i, 34).getValue();
var mech_date = sheet.getRange(i, 39).getValue();
var elec_date = sheet.getRange(i, 42).getValue();

if (mech_date && elec_date == '') {
output_mech_only.push([equip, equip_name, mech_date]);
} else {
if (mech_date == '' && elec_date) {
output_elec_only.push([equip, equip_name, elec_date]);
} else {
if (mech_date && elec_date) {
output_mech_elec.push([equip, equip_name, mech_date, elec_date]);
}
}
}
}
``````

As it stands the code above works just fine, and serves its purpose. However in the interest of simplifying things I have been looking into how to use .getValues() instead to streamline the code. I have looked through the documentation and am unclear as to how I would reference the needed columns.

Is anyone able to clarify the usage of .getValues() in this particular instance?

This is how it could look like with `getValues`:

Each call to `getRange(...).getValues()` gets a double array of values in the rectangular block determined by the arguments of `getRange`: top row, leftmost column, number of rows, number of columns.

When accessing individual values, use two indices `[i][j]` keeping in mind that they begin with 0s. That is, `array[0][0]` will be the value in the upper left corner of the range.

Since two of the columns were consecutive, they are grabbed together into `equip_array`; the other two are grabbed separately. It would also be reasonable to get all of the columns at once, in an array spanning 10 columns from 33th to 42nd. But I think the code is easier to maintain (in case of spreadsheet structure changes) if non-consecutive columns are dealt with separately.

``````var equip_array = sheet.getRange(11, 33, lastRow - 10, 2).getValues();
var mech_date_array = sheet.getRange(11, 39, lastRow - 10, 1).getValues();
var elec_date_array = sheet.getRange(11, 42, lastRow - 10, 1).getValues();

for (i = 0; i < equip_array.length; i++) {
var equip = equip_array[i][0];
var equip_name = equip_array[i][1];
var mech_date = mech_date_array[i][0];
var elec_date = elec_date_array[i][0];

// the rest as in your code
``````