【问题标题】:Google Apps Script and HTML Service; how do I bring in Spreadsheet values to display on my .html page?Google Apps 脚本和 HTML 服务;如何引入电子表格值以显示在我的 .html 页面上?
【发布时间】:2015-01-13 17:02:30
【问题描述】:

使用 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

}

【问题讨论】:

  • 以后在发布问题或答案时,您可能希望将 submissioSSKey 之类的值替换为虚假值,并附上相关说明。
  • 感谢 Jason 我在关键行中添加了注释

标签: google-apps-script google-sheets


【解决方案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;
};

【讨论】:

    【解决方案2】:

    这是一个我已经测试过并适合我的解决方案。

    只使用一种功能。

    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中,数据接收到数据的变量就可以被访问了。

    【讨论】:

    • 桑迪我正在使用您的解决方案;还没有成功。我不是很理解你在这个时间点告诉我什么。希望它会很快点击......你肯定比我高得多。克里斯
    • 注意代码中的Logger.log(); 语句。您可能需要逐行调试代码,并依次检查每个变量的值。在 VIEW 菜单中,选择 LOGS 以查看打印到日志中的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多