【发布时间】:2020-05-11 22:31:14
【问题描述】:
目标如下:将 Google 表格数据用作 Dialogflow 中的fulfillmentText。这是当前代码(使用 Google Apps 脚本):
function doPost(e) {
// This code uses the Sheets Advanced Service, but for most use cases
// the built-in method SpreadsheetApp.getActiveSpreadsheet()
// .getRange(range).getValues(values) is more appropriate.
var ranges = ['Sheet1!B1'];
var result = Sheets.Spreadsheets.Values.batchGet('sheetId, {ranges: ranges});
Logger.log(JSON.parse(result));
//Transforms the read value from Sheets into JSON format
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
}
第一个问题是从电子表格中读取时,不是只获取请求的值,而是输出:
{valueRanges=[{majorDimension=ROWS, values=[[Content here...]], range=Sheet1!B1}], spreadsheetId=XXXYYYZZZ}
与电子表格相关的信息不是必需的。只需要范围内容。到目前为止,还无法清除输出 JSON 中的电子表格部分。我在文档中没有发现任何关于这个问题的信息。
第二个问题是:return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON)中的内容转换为JSON后,前面的内容被包裹在values字段中:https://developers.google.com/apps-script/guides/content#serving_json_from_scripts
{
"valueRanges": [
{
"range": "Sheet1!B1",
"majorDimension": "ROWS",
"values": [
[
"Note that we link to certain 3rd party products via affiliate or sponsored links"
]
]
}
],
"spreadsheetId": "XXXYYYZZZ"
}
总而言之,第一个问题是仅从 Sheets API 读取内容,而不是:sheetId、range 和 majorDimension... 第二个是发送从 values 字段解包的 JSON 值。这是 Dialogflow 中符合条件的响应格式:
https://cloud.google.com/dialogflow/docs/fulfillment-webhook#text_response
提前致谢!!!
【问题讨论】:
标签: google-apps-script dialogflow-es google-sheets-api chatbot