Slack 未从同一项目中的不同文件调用函数而触发 doPost

问题描述 投票:0回答:1

我的 Google Apps 脚本项目遇到问题,需要一些帮助。

简短摘要:我有一个包含三个 .gs 文件的项目。其中之一包含由 Slack 触发的 doPost 函数。为了完成这项工作,我将该项目发布为 Web 应用程序和 API 可执行文件。

问题:当触发 doPost 函数时,它尝试从同一项目内的另一个文件调用函数,但该函数似乎没有执行。但是,如果我创建一个仅包含从其他文件调用该函数的函数的文件,它将按预期工作。 我怀疑这个问题可能与我从 doPost 上下文中调用该函数有关。

这是我的代码:

function doPost(e) {
  var params = JSON.parse(e.postData.contents);

  // Check if it is a URL verification request
  if (params.type === "url_verification") {
    // Extract the challenge value
    var challenge = params.challenge;
    
    // Return the challenge value as plain text
    return ContentService.createTextOutput(challenge).setMimeType(ContentService.MimeType.TEXT);
  }

  // Process message events
  if (params.event && params.event.text && params.event.text.toLowerCase() === "fila") {
    logMessage("Message 'fila' received and processed.");
    updateSheetWithMessage("fila");

    // Call the checkCandidates function only if the message is 'fila'
    checkCandidates();
  } else {
    logMessage("Message received: " + params.event.text);
  }

  // Return a response quickly to avoid Slack re-sending the message
  return ContentService.createTextOutput(JSON.stringify({status: 'success'})).setMimeType(ContentService.MimeType.JSON);
}

function updateSheetWithMessage(message) {
  var sheetId = '1Vpi30e6IUfMYNr06VXnw-zit-P6Lz7hLny2nJW86_JY';
  var sheet = SpreadsheetApp.openById(sheetId).getSheetByName('Logs');
  sheet.getRange('A1').setValue(message);
}

function logMessage(message) {
  Logger.log(message);
}

我尝试过的:

我尝试创建一个仅包含一个函数的文件,该函数调用另一个文件中的函数,并且它有效。 我已经检查过这些函数是否已正确定义并且可以单独调用。 我还尝试设置一个基于时间的触发器来稍后运行该函数,以便它可以在 3 秒内响应 Slack(我读过有关 GAS 中 doPost 的时间限制),但它不起作用。

可疑原因:我认为该问题可能与 Google Apps 脚本中的 doPost 上下文有关。

问题:

在 doPost 上下文中从同一项目内的不同文件调用函数时是否有限制或特殊考虑? 对于这种类型的集成,我应该注意哪些常见陷阱或最佳实践? 如何确保 checkCandidates 在 Slack 触发时正确执行?

google-sheets web-applications slack-api
1个回答
0
投票

问题很可能是由 Web 应用程序部署设置与电子表格共享设置相结合引起的。

部署的版本也可能不包含所需的更改。

您应该查看脚本执行日志,因为它们可能会给您有关问题的提示。此外,您还应该检查网络应用程序部署设置和电子表格共享设置。

© www.soinside.com 2019 - 2024. All rights reserved.