【发布时间】:2018-07-27 23:12:03
【问题描述】:
当给定 Slack 工作区和频道名称时,我正在尝试调用一个获取频道 ID 的函数。我可以在函数中得到正确的结果,但是当我尝试在其他地方调用该函数时,它返回未定义。
获取频道ID的函数`
//GET CHANNEL ID FROM LIST OF ALL CHANNELS IN WORKSPACE
function getChannelID(workspaceName, pageLimit, channelName, nextCursor){
var channelListResponseURL = 'https://slack.com/api/conversations.list';
var payload = {
'limit': pageLimit,
'types': 'public_channel, private_channel',
'cursor' : nextCursor
};
var options = createURLargs(workspaceName, payload);
var channelListResponse = UrlFetchApp.fetch(channelListResponseURL, options);
var channelListJson = channelListResponse.getContentText();
var channelListData = JSON.parse(channelListJson);
//iterate through each channel in the returned JSON object and sets the channel ID for the one matching the channelName
for (var i in channelListData.channels){
if(channelListData.channels[i].name == channelName){
var channelID = channelListData.channels[i].id;
Logger.log('FOUND CHANNEL ID: '+ channelID);
return channelID;// IF CHANNEL ID FOUND, THEN EXIT getChannelID FUNCTION AND RETURN CHANNEL ID
}
}
// IF NO CHANNEL ID IS FOUND, THEN CHECK TO SEE IF PAGINATION IS IN EFFECT, UPDATE CURSOR, AND RERUN getChannelID FUNCTION
if (channelListData.response_metadata.next_cursor && channelListData.response_metadata.next_cursor != ""){
nextCursor = channelListData.response_metadata.next_cursor;
getChannelID(workspaceName, pageLimit, channelName, nextCursor);
} else {
// IF CHANNEL PAGINATION IS NOT IN EFFECT, OR REACHED LAST PAGE AND NO RESULT IS FOUND
return 'No Channel Found in Workspace';
}
}
我可以清楚地看到记录器中的“FOUND CHANNEL ID: CXXXXXX”字符串,所以我确定它正确地找到了它。
但是当我从主函数调用这个 getChannelID 时,它返回 undefined。
var channelID = getChannelID(workspaceName, pagLimit, channelName, nextCursor);
Logger.log(channelID);
奇怪的是,当来自 Slack 的 JSON 对象没有分页时,这似乎可以工作,但是当结果分页返回时,我似乎只是未定义。
任何想法为什么它返回的结果是未定义的,即使它在函数中工作?
【问题讨论】:
-
只是扫描它,我看到 pageLimit 在主函数调用中拼写为 pagLimit,这个参数会不会把东西扔掉?
-
感谢您的回复,但不,不是这样。我有几个页面限制变量,所以虽然有点混乱,但它的定义是正确的。
标签: javascript google-apps-script slack-api