2014-04-23 27 views
0

我正在运行一个模板化的谷歌脚本,它构建了一个包含谷歌电子表格内容的html页面。谷歌应用程序脚本没有正确识别图纸

当我运行脚本与电子表格https://docs.google.com/spreadsheet/ccc?key=0AtDy2rbIwVyldE82MG50SkR3UWYyam5YRVd1ajZlcnc&usp=drive_web#gid=0一切工作正常。

当我使用电子表格https://docs.google.com/spreadsheets/d/1A0Kd_BKeO9IB-SJvRMhC68q0XMQLrXarVVPlFJa_fMg/edit#gid=0运行脚本时,我收到需要先选择活动电子表格的消息。

下面是脚本:

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

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

下面是index.html文件:

<? 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> 

看来,问题出在第二个电子表格。

任何帮助将被折衷。

回答

0

您当前分配给mysheet的引用是指整个文档。您仍然需要获取包含数据的工作表的引用。

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

看来,当电子表格只包含单张表单时,如果您只想读取其内容,则无需显式引用表单。尽管如此,该脚本完美适用于第一张电子表格,但第二张却出错。 – user3564757

+0

脚本是否按照当前运行的第一个电子表格在浏览器中打开但不是第二次运行?我已经看到类似的行为,因为有一个活动的会话,脚本将工作。 – LoganGoesPlaces

+0

无论如何,我会检查SpreadsheetApp.openById()返回的结果。 'SPREADSHEET_KEY'是如何设置的? – LoganGoesPlaces

0

使用.getActiveSheet() 和脚本将是: 功能的doGet(){ 返回HtmlService .createTemplateFromFile( '索引') 评估(); }

函数的getData(){ VAR MySheet的工作= SpreadsheetApp.openById( '试算表索引').getActiveSheet() .getDataRange()的GetValues(); return mysheet; }

+0

请注意评论你的代码的作用? –

相关问题