找不到脚本函数 doget,但我没有在我的代码上使用 doGet

Posted

技术标签:

【中文标题】找不到脚本函数 doget,但我没有在我的代码上使用 doGet【英文标题】:Script function not found doget, but I don't use doGet on my code 【发布时间】:2019-02-08 21:51:21 【问题描述】:

我正在使用电子表格作为存储进行 PWA。当我想提交我的信息时,它在 Web(Chrome、Safari、Opera 等)上运行良好,它也像 android 上的 PWA 一样运行。

但是当我在 Iphone/iPad 上添加应用程序时,当我尝试提交信息时,它会在 safari 上打开一个页面并向我显示此错误:

找不到脚本函数:doGet。

谷歌脚本

    // spit out all the keys/values from the form in html for email
    // uses an array of keys if provided or the object to determine field order
    function formatMailBody(obj, order) 
    return result; // once the looping is done, `result` will be one long string to put in the email body
    

    function doPost(e) 
    //operations with values from form
    record_data(e);

    function record_data(e) //operations

这是我的 HTML 代码:

    <form id="gform" class="pure-form pure-form-stacked" data-email="xxxxx@gmail.com" action="https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxx/exec" method="POST">
    //Some inputs

    <input type="hidden" id="de" name="de" value='nombre'> 
    <input type="hidden" id="tipopersona" name="tipopersona"> 
    <input type="hidden" id="correo" name="correo" > 
    </form>

我想删除 doGet () 错误并按应有的方式执行其他代码,否则只知道在 ios PWA 中导致该错误的原因。

【问题讨论】:

【参考方案1】:

此问题已在先前的 Stack Overflow 主题中得到解答,标题为:Script function not found: doGet。该答案未显示问题解决方案的代码,因此我将在此处添加,以防其他人遇到此问题。

正如该答案中所共享的,无论脚本是否处理 GET 请求,所有 Google Apps 脚本网络应用程序部署都必须包含 doGet 函数。我通过添加 doGet 函数重写脚本并将其返回值设置为 doPost 函数并传递给它的事件参数来消除此错误。下面是一个简化的例子:

function doPost (e) 

    Logger.log(`POST method activated: $e`);   

    return ContentService.createTextOutput(JSON.stringify('doPost is working.'));


function doGet (e) 

    return doPost(e);    

当前用于 web 应用程序的Google Apps Script documentation 似乎没有提到这个要求,但是当 doGet 被添加到 doPost 脚本时,它将消除这个特定的错误。

【讨论】:

以上是关于找不到脚本函数 doget,但我没有在我的代码上使用 doGet的主要内容,如果未能解决你的问题,请参考以下文章

我的 doGet 函数有啥问题?

我定义了一个Vue实例,但我找不到它

在 crontab 中运行脚本--reboot:找不到命令

Google Apps 脚本:“找不到脚本函数”错误

在 4gl 文件中找不到函数定义

jQuery-UI 在没有 CSS 或自定义的情况下无法在我的用户脚本中工作?