【问题标题】:Implement Google Apps Script to HTML将 Google Apps 脚本实现为 HTML
【发布时间】:2016-09-23 11:50:49
【问题描述】:

我想从 HTML 文件中调用 Google 工作表。 这可以通过以下文档 (https://developers.google.com/apps-script/guides/html/templates) 实现:

<body>
    <? var data = SpreadsheetApp
        .openById('1234567890abcdefghijklmnopqrstuvwxyz')
        .getActiveSheet()
        .getDataRange()
        .getValues(); ?>    </body>

当我加载 HTML 文件时,它确实有效并捕获了值。 我需要做的是 - 我想在一个由按钮激活的 for 循环内的电子表格中设置值。

function processForm() {

var elementsNr = document.getElementsByName("nummerierung")
var elements = document.getElementsByName("schuelername")
var elementsDate = document.getElementsByName("datuminput")
var elementsArt = document.getElementsByName("art")
var elementsZeit = document.getElementsByName("zeit")

for (var i = 0; i < elements.length; i++) {
    var Nr = elementsNr[i].value;
    var sname = elements[i].value;
    var datum = elementsDate[i].value;
    var Uart = elementsArt[i].value;
    var UZeit = elementsZeit[i].value;

     var data = SpreadsheetApp
                   .openById('1MWy0J5ZKnsXXKWEX72Bh9cRBvsFkDAqTEhW1SxFavmA')
                   .getActiveSheet()
                   .getDataRange(sheet.getLastRow()+1, 1, 1, 5)
                   .getValues([[Nr, datum, sname, Uart, UZeit]]); 
}

但不知何故我得到一个参考错误:

ReferenceError: SpreadsheetApp 未定义

:(

有人吗?

【问题讨论】:

    标签: html google-apps-script google-sheets


    【解决方案1】:

    所引用的文档是关于模板化 HTML 的,但问题中显示的代码未使用模板化 HTML 语法。另一方面,Best Practices doc 建议异步加载数据。

    要从客户端 JavaScript(HTML 文件上的脚本)调用服务器端 Apps Scripts 函数,首先在 .gs 文件上创建一个函数,然后使用google.script.run从 HTML 调用它

    有关代码示例,请参阅 DanielSpreadsheetApp.getActiveSpreadsheet() is breaking scriptanswer

    顺便说一句,getDataRangegetValues 不应该有参数。

    【讨论】:

    • 感谢 ruben - 我之前尝试过这个,但我遇到了很大的问题,因为这些函数是异步运行的。 :/ 在文档中看起来这种方式也应该有效,它会立即解决我所有的问题。
    • 再次感谢鲁本!即使不是-最佳实践-,您是否看到了以我尝试的方式进行操作的方法?我很绝望。我现在尝试了不同的方法: 1. 尝试将单个值从 functionINDEXHTML 提供给 functionCODEGS - 但由于它们的速度不同,一些数据会丢失。 2. 尝试将 functionINDEXHTML 中的数组提供给 functionCODEGS -> 不起作用:stackoverflow.com/questions/39637258/…(错误:由于属性中的非法值而失败:0) 3. 尝试在 functionA 中实现 functionB(此线程):'(
    • 请阅读 How to Askminimal reproducible example 如果您需要有关如何在 Stack Overflow 上提问的更多帮助,请在 Meta Stack Overflow 上提问。
    • 对答案添加了评论。
    • 我问了一个具体的问题,但你给我的解决方案导致了我说明的其他问题。我的问题很小:如何在我的函数中实现文档的代码...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多