我想为给定文档中的特定工作表创建几个单独的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的一张纸上的数据。预期结果应如下所示:
答案 0 :(得分:0)
问题
不幸的是,部署在Google基础架构上的WebApp本身不支持路由,每个项目只有一个URL,分别以生产/exec
和开发环境/dev
结尾。
解决方案
幸运的是,如果您想指定要运行的功能/要使用的ID等,可以在此URL后面附加一个查询字符串。考虑一下doGet()
/ {{1} }(在这种情况下为路由器):doPost()
。您可以方便地从事件对象在/exec?param1=value1¶m2=value2
或parameter
键下使用传递给查询字符串的每个参数。
样品
如果我对您的理解正确,那么您想通过parameters
属性路由WebApp,对吗?然后,您的URL应该看起来像sheetName
(顺便说一句,不要忘记对其进行正确编码,尤其是如果您的名称包含空格),并且应该在/exec?name=data-2018
中访问此参数:
doGet
有用的链接