如何通过域将参数转发到 Apps 脚本网络应用程序?

How do I pass parameters via a domain forward to an Apps Script web app?

我正在制作一个小型 Web 应用程序,它会根据传递的 URL 参数向我发送提醒。目前,我有一个个人域名 - 为了便于讨论,我们将其称为 http://somedomain.com.

我在域提供商网站的 DNS 设置中设置了一个子域,以便它重定向到 Google Apps Script 发布的 Web 应用程序,该应用程序旨在向我发送提醒。我的工作流程如下:

function doGet(e){
  
  GmailApp.sendEmail('MYEMAIL', 'Reminder: placeholder text', e.parameter.q);
  return HtmlService.createHtmlOutput("✔️ Sent");
}

工作流程在重定向所有工作方面都非常有效,我最终进入了一个只显示 ✔️ Sent 的页面。 然而,这里的问题是,当我转到 s.somedomain.com?q=medicine 时,我会自动重定向到 s.somedomain.com/?q=medicine(在顶级域之后有一个 /),这完全破坏了脚本,因为参数是在重定向之前被传递到我的根目录,导致重定向前往:

https://script.google.com/macros/s/.../exec/?q=medicine

而不是:

https://script.google.com/macros/s/.../exec?q=medicine

我不能 100% 确定这是否是我的 DNS 转发问题,或者我是否需要将我的域指向一个页面并以这种方式处理参数,或者这是否可以在 Apps 脚本中完成通过尝试获取尾随 /.

之后的参数

我的域名提供商是 ionos(以前的 1and1),我的目标设置如下所示,在 Domains & SSL > Subdomains > s.somedomain.com > Adjust Destination > Forward Domain.

这不适用于纯重定向,因为 URL 参数不会在重定向 302 上传递。

然而,这可以通过使用 ionos 转发域页面上可用的 'Frame redirect' 选项来完成。正如 TheMaster 所建议的,而不是将框架重定向指向

https://script.google.com/macros/s/.../exec

它现在重定向到:

https://script.google.com/macros/s/...

我已经编辑了我的 code.gs 文件,因为 Apps 脚本网络应用程序位于另一个域中,因此不能简单地使用 HtmlService.createHtmlOutput():

进行评估
function doGet(e){

  GmailApp.sendEmail('MYEMAIL', 'Reminder: placeholder text', e.parameter.q);
  return HtmlService.createTemplateFromFile('urlString').evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

我现在有一个包含确认页面的 urlString.html 文件:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    ✔️ Sent    
  </body>
</html>