Google Apps脚本和HTML服务;如何引入电子表格值以显示在我的.html页面上?

时间:2015-01-12 20:43:32

标签: google-apps-script google-sheets

使用Google Apps脚本和HTML服务如何将特定的数据单元格引入我的index.html页面?

基本上我的'getdata'功能确实为我提供了电子表格数据,但我的'getdata2'需要一些帮助。我希望有人可能有想法可能让我走了。

我有一些代码,我认为这些代码可以帮助您了解我希望的内容。

index.html跟随

 <H1>Hope to get data from a spreadsheet</H1>
<div id="myDataDiv">
<? var data = getData(); ?>
<?= data       ?>

</div>
<Hr>
<div id="myDataDiv2">
<? var data2 = getData2(); ?>
<?= data2.mySingleValue       ?><br />
<?= data2.mySingleValue2       ?>
</div>

code.gs如下

var submissioSSKey = '1Jyc2XmgQ7ffuRDpieT_DyJIUWVWi-9UUn2vAQqr_zJY';//this is an altered key
function doGet() {
      return HtmlService
      .createTemplateFromFile('index')
      .evaluate()
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}

function getData() {
  return SpreadsheetApp
 .openById(submissioSSKey) 
  .getActiveSheet().getRange("B3").getValue(); 
}

function getData2() {
var ss = SpreadsheetApp.openById(submissioSSKey); 
var mySingleValue = ss.getSheetByName('Sheet1').getRange('B3').getValue(); //hoping for value 1 
var mySingleValue2 = ss.getSheetByName('Sheet1').getRange('B4').getValue(); //hoping for value 2

}

2 个答案:

答案 0 :(得分:1)

您的函数getData2()没有返回任何值,因此没有任何内容传递给HTML scriptlet中的data2变量。

试试这个:

function getData2() {
 var ss = SpreadsheetApp.openById(submissioSSKey);
 var myValues = {}; 
 myValues["mySingleValue"] = ss.getSheetByName('Sheet1').getRange('B3').getValue(); //hoping for value 1 
 myValues["mySingleValue2"] = ss.getSheetByName('Sheet1').getRange('B4').getValue(); //hoping for value 2
 return myValues;
};

答案 1 :(得分:0)

这是我测试过并为我工作的解决方案。

仅使用一个功能。

function getData(argWhatCell) {
  Logger.log("argWhatCell: " + argWhatCell);

  var returnValue = SpreadsheetApp.openById("My Sheet ID").getActiveSheet().getRange(argWhatCell).getValue();
  Logger.log("returnValue: " + returnValue);
  return returnValue;
}

注意,函数getData(argWhatCell)必须传递一个字符串,该字符串是您要检索的表单元格。 多次使用相同的函数getData()而不是具有多个函数。 传递要从HTML中检索的单元格。您不需要getData2()功能。

<H1>Hope to get data from a spreadsheet</H1>
<div id="myDataDiv">
  <? var data = getData("B3"); ?>
  <?= data       ?>
</div>

<Hr>

<div id="myDataDiv2">
  <? var data2 = getData("B3"); ?>
  <?= data2       ?>

  <? var data3 = getData("B4"); ?>
  <?= data3       ?>
</div>

如果您想通过仅运行一次函数一次获取所有数据,则需要创建一个数组,并将该数组返回给scriptlet。一旦将数据检索到scriptlet中,就可以访问数据接收数据的变量。