Google apps script Google Sheets API仅返回不必要的信息
目标是:将GoogleSheets数据作为fulfillmentText使用到Dialogflow中。这是当前代码(使用Google Apps脚本): 第一个问题是,当从电子表格中读取时,不是仅获取请求的值,而是输出:Google apps script Google Sheets API仅返回不必要的信息,google-apps-script,dialogflow-es,google-sheets-api,chatbot,Google Apps Script,Dialogflow Es,Google Sheets Api,Chatbot,目标是:将GoogleSheets数据作为fulfillmentText使用到Dialogflow中。这是当前代码(使用Google Apps脚本): 第一个问题是,当从电子表格中读取时,不是仅获取请求的值,而是输出: {valueRanges=[{majorDimension=ROWS, values=[[Content here...]], range=Sheet1!B1}], spreadsheetId=XXXYYYZZZ} 与电子表格相关的信息不是必需的。只需要范围内容。到目前为止,
{valueRanges=[{majorDimension=ROWS, values=[[Content here...]], range=Sheet1!B1}], spreadsheetId=XXXYYYZZZ}
与电子表格相关的信息不是必需的。只需要范围内容。到目前为止,不可能清除输出JSON中的电子表格部分。我在文档中没有找到关于这个问题的任何信息
第二个问题是:在return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON)
中将内容转换为JSON后,前面的内容被包装在值
字段中:
总而言之,第一个问题是仅从Sheets API读取内容,而不是:sheetId
、range和majorDimension
。。。第二个是发送从values
字段中展开的JSON值。这是Dialogflow中符合条件的响应格式:
提前感谢 我相信你的目标如下
- 您希望从以下对象检索
的内容。您希望返回像“注意,我们通过附属机构或赞助商链接链接到某些第三方产品”
这样的内容{“values”:content}
{ "valueRanges": [ { "range": "Sheet1!B1", "majorDimension": "ROWS", "values": [ [ "Note that we link to certain 3rd party products via affiliate or sponsored links" ] ] } ], "spreadsheetId": "XXXYYYZZZ" }
返回解析后的JSON对象。因此不需要使用Sheets.Spreadsheets.Values.batchGet
JSON.parse
- 为了从响应值中检索值,可以使用
。另外,检索第一个元素时,请使用result.valueRanges[0].values
result.valueRanges[0].values[0][0]
- 如果要检索“值”,请使用
而不是result.valueRanges[0]。values
result.valueRanges[0]。values[0][0]
- 修改Web应用脚本时,请将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请注意这一点。
{
"valueRanges": [
{
"range": "Sheet1!B1",
"majorDimension": "ROWS",
"values": [
[
"Note that we link to certain 3rd party products via affiliate or sponsored links"
]
]
}
],
"spreadsheetId": "XXXYYYZZZ"
}
{
"valueRanges": [
{
"range": "Sheet1!B1",
"majorDimension": "ROWS",
"values": [
[
"Note that we link to certain 3rd party products via affiliate or sponsored links"
]
]
}
],
"spreadsheetId": "XXXYYYZZZ"
}
Logger.log(JSON.parse(result));
//Transforms the read value from Sheets into JSON format
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
var content = result.valueRanges[0].values[0][0];
var res = {values: content};
return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);