【问题标题】:Google Apps Script how to use page name to query google sheetGoogle Apps 脚本如何使用页面名称来查询 google sheet
【发布时间】:2020-03-09 22:44:48
【问题描述】:

我有一个简单的 Google 站点设置,它运行一个查询 Google 表格的 Web 应用程序,并返回带有必要查询信息的模板化 html 代码。我想添加允许脚本使用嵌入 Web 应用程序的页面名称查询工作表的功能。

例如,假设我的网站是:https://sites.google.com/view/SOMESITE

假设它有几页,例如:

我想做的是将我的 Web 应用程序嵌入到这些工作表中的每一个中,并使用相应的页面名称(即 Dave 或 Rick)作为参数来优化 Web 应用程序所做的查询。

我已经尝试过了,但是“页面”返回 Null。

var page = SitesApp.getActivePage();
var name = Logger.log(page.getName());

如何将页面名称作为变量在我的脚本/Web 应用程序中使用?

更新:

我已经根据 cmets 修改了我的方法。假设我有这样的 WebApp 的 URL:

https://www.somedomain.com/blah/blah?Rick

这是我的网络应用代码:

DoGet:

function doGet(e) {
  var name = e.queryString
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}

获取数据

function getData() {

     // ...here there is a bunch of code extracting data from my spreadsheet

      return [pick, title, artist, name]

    } 

HTML:

<!DOCTYPE html>
<html>

  <head>
    <base target="_top">
  </head>

  <body>

    <? var data = getAlbum(); ?>
  // ... the rest is a bunch of markup that makes a table of the query results from getData

如何将变量“名称”(应该等于“Rick”)传递给我的 getData 函数,以便在查询工作表时使用它?

【问题讨论】:

  • 把它添加到Url中的查询字符串中如何。
  • 不能说谎,我不确定这意味着什么或如何完成它。
  • https://www.domaint.com/blah/blah?key=value....
  • 当我构建多页 web 应用程序时,这是我用来访问不同页面的一种方式。

标签: google-apps-script google-sheets-api


【解决方案1】:

您可以将查询参数传递给您的Web App URL,您可以查看here 查询参数是什么以及如何使用它们。例如:

 https://www.somedomain.com/blah/blah?name=Rick

使用来自e event object 的parameter 属性,您可以使用传递给get 请求的所有参数获取对象。您可以直接在 code.gs 文件中使用这些值,例如:

DoGet:

function doGet(e) {
  var parameters = e.parameter;
  getData(parameters);
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}

获取数据

function getData(parameters) {
 // ...here there is a bunch of code extracting data from my spreadsheet
  return [pick, title, artist, name]
}

最后,如果你需要在 HTML 文件和 code.gs 文件之间进行通信,你应该检查一下documentation。

【讨论】:

    【解决方案2】:

    我在 cmets 中没有足够的空间。但这就是doGet() 的样子:

    function doGet(e) 
    {
      //Logger.log('query params: ' + Utilities.jsonStringify(e));
      if(e.queryString !=='')
      {  
        switch(e.parameter.mode)
        {
          case 'page4':
            setPage('Page4')      
            return HtmlService
            .createTemplateFromFile('Page4')
            .evaluate()
            .addMetaTag('viewport', 'width=device-width, initial-scale=1')
            .setTitle("Page4"); 
            break;  
          case 'page3':
            setPage('Page3');        
            return HtmlService
            .createTemplateFromFile('Page3')
            .evaluate()
            .addMetaTag('viewport', 'width=device-width, initial-scale=1')
            .setTitle("Page3");
            break;
          case 'page2':
            setPage('Page2');        
            return HtmlService
            .createTemplateFromFile('Page2')
            .evaluate()
            .addMetaTag('viewport', 'width=device-width, initial-scale=1')
            .setTitle("Page2");
            break;  
          case 'page1':
             setPage('Page1');
             return HtmlService
            .createTemplateFromFile('Page1')
            .evaluate()
            .addMetaTag('viewport', 'width=device-width, initial-scale=1')
            .setTitle("Page1");
            break;
          default:
            setPage('Page1');
            return HtmlService
            .createTemplateFromFile('Page1')
            .evaluate()
            .addMetaTag('viewport', 'width=device-width, initial-scale=1')
            .setTitle("Page1");
            break;
        }
      }
      else
      {
        setPage('Page1');
        return HtmlService
        .createTemplateFromFile('Page1')
        .evaluate()
        .addMetaTag('viewport', 'width=device-width, initial-scale=1')
        .setTitle("Page1");
      }
    }
    

    Requirements for WebApps

    【讨论】:

    • 好的,这就带来了第二个问题。如何将 DoGet 中的“e”传递给“GetData”函数?我会将我的代码添加到我的初始帖子中。
    • 请阅读 Web 应用程序的要求。该链接刚刚放入我的答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    相关资源
    最近更新 更多