Q:

Adwords scripts not writing to google sheet

I recently made a script to get info from the Adwords API report KEYWORDS_PERFORMANCE_REPORT that outputed the information to a google sheet and it worked fine.
I decided to make another report for extensions all i basically did was copy and past the old code changing the URL for the google sheet and which report it should use PLACEHOLDER_REPORT instead of the keyword one, as well as some of the metrics.
The script runs without saying that anything is wrong but it doesn't output the values to where its supposed to, or at all for that matter.
function processAccount()
{

  var report = AdWordsApp.report(
    "SELECT AccountDescriptiveName, CampaignName, ExtensionPlaceholderCreativeId, ExtensionPlaceholderType " +
    "FROM   PLACEHOLDER_REPORT " +
    "WHERE  CampaignStatus = ENABLED " +
    "DURING LAST_7_DAYS",
    {apiVersion: 'v201705'});

  var rows = report.rows();

  if (rows.hasNext()) 
  {
        writeReport(rows);
      }
    }    

function writeReport(rows) 
{
    var spreadsheet = validateAndGetSpreadsheet(URL);

      // Clear all rows in the Details tab of the spreadsheet below the header row.
      var clearRange = spreadsheet.getRangeByName('Headers')
        .offset(1, 0, spreadsheet.getSheetByName('Details')
            .getDataRange().getLastRow())
        .clearContent();

      // Build each row of output values in the order of the Report tab columns.
      var outputValues = [];
      while (rows.hasNext())
      {
        var row = rows.next();

    outputValues.push([
      row["AccountDescriptiveName"],  
      row["CampaignName"],
      row["ExtensionPlaceholderCreativeId"], 
      row["ExtensionPlaceholderType"],
      ]);
   }
  // Find the first open row on the Report tab below the headers and create a
  // range large enough to hold all of the failures, one per row.
  var lastRow = spreadsheet.getSheetByName('Details')
    .getDataRange().getLastRow();
  var headers = spreadsheet.getRangeByName('Headers');
  var outputRange = headers
    .offset(lastRow - headers.getRow() + 1, 0, outputValues.length);

  Logger.log("outputValue length is "+outputValues.length);
  outputRange.setValues(outputValues);
  Logger.log(outputValues[0]);

  spreadsheet.getRangeByName('Date').setValue(new Date());

}

I know its finding the sheet because it clears the rows below the header like its supposed to and puts the date and time when it is run. 
The logger shows that outputValue has a length of 293 so its definitly getting stuff and also logs the stuff at outputValue[0] so i dont know why it wont write to the sheet.
I called the adwords helpline but they said thearen't't trained in the api stuff so they don't know whats up, and i've googled it with no success

A:

Turns out i had messed up the output range it was outputting it about 120 rows lower than it was supposed toi do if id just scrolled down i would of seen it. fixed that and now all is fine.

