【发布时间】:2019-12-01 13:27:57
【问题描述】:
我正在尝试从电子表格返回数据,代码运行正常,并且数据出现在日志中,但 agent.add 没有按预期工作。
我需要让对话流响应并返回我从电子表格中获得的数据。
发生的情况是,在代码的一个位置,对话流agent.add 按预期工作,但它没有返回我从电子表格中获得的数据,请参阅此部分:
agent.add("status code inside: "+ myCode); // agent.add working, but myCode variable not showing the data which returned from spreadsheet, it only shows the original value "XmXm"
在代码的另一个位置,agent.add 不起作用,即使我可以在日志中看到电子表格数据,(我在agent.add 之前尝试过使用和不使用return)看到这部分
return agent.add("status code outside:"+ value); // function agent.add whether or not I add return before it
请注意,我尝试了许多 stackoverflow 中提供的解决方案,但我仍然无法修复它,下面是我的完整代码:
function sheetPromiseHandelerGet(orderNum){
const jwtClient = authSheet();
let getSheetPromise = new Promise((resolve, reject) => {
const mySpreadSheetId = 'SHEET_ID';
const sheetName = "SHEET_NAME";
let myCode = "XmXm"; // give myCode a string value for testing
let testFirst = 0;
sheets.spreadsheets.values.get(
{
auth: jwtClient,
spreadsheetId: mySpreadSheetId,
range: `${sheetName}!A:H`
},
(err, res) => {
if (err) {
console.error(err);
return;
}
const data = res.data.values;
let i = 0;
for (i = 0; i < data.length; i++) {
if (orderNum == data[i][0]){
myCode = `myCode: Order details: ${data[i][1]}`;
resolve(myCode);
}
}
}
);
agent.add("status code inside: "+ myCode); // agent.add working, but myCode variable not is "XmXm"
});
return getSheetPromise.then(function(value) {
console.log(value); // the value (which is the result comes from spreadsheet) appears correctly in the debugger,
return agent.add("status code outside:" value); // function agent.add whether or not I add return before it
});
}
function orderStatusHandel(agent){
const detailsNum = agent.parameters.detailsNum;
sheetPromiseHandelerGet(detailsNum);
}
function authSheet(){
//
}
非常感谢您的帮助!
【问题讨论】:
-
我无法理解
myCode variable not is "XmXm"。我能问一下你期望的结果吗?顺便问一下,您要使用 Google Apps Script 还是 Node.js? -
@Tanaike 很抱歉有任何混淆,XmXm 只是初始值,检查该值是否会被来自电子表格的新值覆盖
-
感谢您的回复。根据您的回复,我建议将修改后的脚本作为答案。你能确认一下吗?如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
标签: node.js google-apps-script google-sheets dialogflow-es