单个文档中各个工作表的不同URL

时间:2019-06-23 15:42:11

标签: google-apps-script google-sheets

我想为给定文档中的特定工作表创建几个单独的URL(换句话说,端点)。我有数据(不多,大约200-250行)。基本上,每年的数据结构都是完全相同的(ID,国家/地区,职务,姓名等)。我设法将选定的单元格转换为正确的JSON格式,并将以下内容部署为Web应用程序。

我目前正在使用doGet()方法,该方法可以在下面找到。

我尝试使用官方的Google文档,但在我看来我并不完全了解它。

https://developers.google.com/apps-script/guides/web#url_parameters

function doGet(e) 
{
    var sheetName = "Lorem Ipsum";
    var sheetID = "SDJHFLKSDJFLJSD94UF940FUJ9FS90FJ049JW9F";
    var book = SpreadsheetApp.openById(sheetID);
    var sheet = book.getSheetByName(sheetName);
    var JSON = convertSheet2JsonText(sheet);
    return ContentService.createTextOutput(JSON.stringify(JSON)).setMimeType(ContentService.MimeType.JSON);
}

[
    {
        "ID": 1,
        "PUBLISHED": true,
        "NAME": "Lorem Ipsum",
        "TITLE": "Lorem Ipsum",
        "SOURCE": "Lorem Ipsum",
        "DATE": "14 June 2019",
        "COUNTRY": "Poland"
    },
    {
        "ID": 2,
        "PUBLISHED": false,
        "NAME": "Lorem Ipsum",
        "TITLE": "Lorem Ipsum",
        "SOURCE": "Lorem Ipsum",
        "DATE": "05 August 2019",
        "COUNTRY": "USA"
    }
]

基本上,刚部署后,我得到一个链接,但是它仅包含我提供ID的一张纸上的数据。预期结果应如下所示:

  • URL:../ macros / s /../ exec / data-2018
  • URL:../ macros / s /../ exec / data-2019
  • URL:../ macros / s /../ exec / data-2020

1 个答案:

答案 0 :(得分:0)

问题

不幸的是,部署在Google基础架构上的WebApp本身不支持路由,每个项目只有一个URL,分别以生产/exec和开发环境/dev结尾。

解决方案

幸运的是,如果您想指定要运行的功能/要使用的ID等,可以在此URL后面附加一个查询字符串。考虑一下doGet() / {{1} }(在这种情况下为路由器):doPost()。您可以方便地从事件对象/exec?param1=value1&param2=value2parameter键下使用传递给查询字符串的每个参数。

样品

如果我对您的理解正确,那么您想通过parameters属性路由WebApp,对吗?然后,您的URL应该看起来像sheetName(顺便说一句,不要忘记对其进行正确编码,尤其是如果您的名称包含空格),并且应该在/exec?name=data-2018中访问此参数:

doGet

有用的链接

  1. 事件对象structure(我年龄较大的answers之一);
  2. URL编码reference;