'Google apps script not identifying sheet correctly

I'm running a templated google script that constructs an html page with the contents of a google spreadsheet.

When I run the script with the spreadsheet https://docs.google.com/spreadsheet/ccc?key=0AtDy2rbIwVyldE82MG50SkR3UWYyam5YRVd1ajZlcnc&usp=drive_web#gid=0 everything works fine.

When I run the script with the spreadsheet https://docs.google.com/spreadsheets/d/1A0Kd_BKeO9IB-SJvRMhC68q0XMQLrXarVVPlFJa_fMg/edit#gid=0 I get the message that I need to first select an active spreadsheet.

Here is the script:

function doGet() {
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}

function getData() {
  var mysheet = SpreadsheetApp.openById('SPREADSHEET_KEY').getDataRange().getValues();
  return mysheet;
}

Here is the index.html file:

<? var data = getData(); ?>
<table>
  <? for (var i = 0; i < data.length; i++) { ?>
    <tr>
      <? for (var j = 0; j < data[i].length; j++) { ?>
        <td><?= data[i][j] ?></td>
      <? } ?>
    </tr>
  <? } ?>
</table>

It seems that the problem lies in the second spreadsheet.

Any help will be apreciated.



Solution 1:[1]

The reference you are currently assigning to mysheet refers to the document as a whole. You still need to grab a reference to the sheet that contains the data.

function getData() {
  var spreadsheet = SpreadsheetApp.openById('SPREADSHEET_KEY').getDataRange().getValues();
  var mysheet = spreadsheet.getSheetByName('NameOfTheSheet');
  return mysheet;
}

Solution 2:[2]

use .getActiveSheet() and the script would be:

function doGet() {
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}

function getData() {
  var mysheet = SpreadsheetApp.openById('SPREADSHEET_KEY')**.getActiveSheet()**.getDataRange().getValues();
  return mysheet;
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 LoganGoesPlaces
Solution 2 Sophy Swicz