Google App 脚本:在 GAS 中运行 UrlFetchApp 时出现 403

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

我正在创建一个 API 来记录 Google 表单响应。

我已经在 GAS 中实现了以下代码,并在提交 Google 表单时使用 GAS 中的 UrlFetchApp 来运行 Endpoint。

执行UrlFetchApp时,有时成功,有时返回200,有时失败,返回403,我想知道为什么会生成403。 我正在使用 Google Form 和 API 服务器端执行的相同参数进行测试。

function onFormSubmit(e) {
  const responses = e.response.getItemResponses();
  const userId = responses[0].getResponse()
  const questionnaireId = responses[1].getResponse()
  Logger.log(`userId:${userId}`);
  Logger.log(`questionnaireId:${questionnaireId}`);

  if (!isUUID(userId) || !isUUID(questionnaireId)) {
    Logger.log('Invalid UUID format.');
    return;
  }
  const baseUrl = `https://example.com`;
  const endpoint = `${baseUrl}/v1/users/${userId}/questionnaire`;
  Logger.log(`endpoint: ${endpoint}`);

  var payload = {
    "questionnaire_id": questionnaireId,
  };
  var options = {
    "method": "post",
    "payload": JSON.stringify(payload),
    "headers": {
      "Content-Type": "application/json",
      "Accept": "application/json"
    },
    "muteHttpExceptions": true
  };
  var response = UrlFetchApp.fetch(endpoint, options);
  Logger.log(response.getContentText());
}

function isUUID(str) {
  const uuidPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
  return uuidPattern.test(str);
}
javascript google-apps-script urlfetch
1个回答
0
投票

自我解决。 我们使用 AWS 构建 API,当我从 WAF 规则中删除

AWSManagedRulesAnonymousIpList
时,403 错误就不再发生。 也许 Google 使用的 IP 地址之一已被屏蔽。

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