Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google应用程序脚本如何使用页面名称查询Google工作表_Google Apps Script_Google Sheets Api - Fatal编程技术网

Google apps script Google应用程序脚本如何使用页面名称查询Google工作表

Google apps script Google应用程序脚本如何使用页面名称查询Google工作表,google-apps-script,google-sheets-api,Google Apps Script,Google Sheets Api,我有一个简单的Google站点设置,它运行一个Web应用程序来查询Google工作表,并返回带有必要查询信息的模板html代码。我想添加一些功能,允许脚本使用嵌入Web应用程序的页面名称查询工作表 例如,假设我的网站是: 假设它有几页,例如: 我想做的是将我的web应用程序嵌入到每个工作表中,并使用相应的页面名称(即Dave或Rick)作为参数来优化web应用程序执行的查询 我已经试过了,但是“页面”返回为空 var page = SitesApp.getActivePage(); va

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

例如,假设我的网站是:

假设它有几页,例如:

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

我已经试过了,但是“页面”返回为空

var page = SitesApp.getActivePage();
var name = Logger.log(page.getName());
如何将页面名称作为变量在脚本/Web应用程序中使用

更新:

function doGet(e) {
  var name = e.queryString
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}
<!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
function doGet(e) {
  var parameters = e.parameter;
  getData(parameters);
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}
我已根据评论修改了我的方法。假设我的Web应用程序的URL如下:

这是我的Web应用程序代码:

DoGet:

function doGet(e) {
  var name = e.queryString
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}
<!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
function doGet(e) {
  var parameters = e.parameter;
  getData(parameters);
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}
获取数据

function getData() {

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

      return [pick, title, artist, name]

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

function doGet(e) {
  var name = e.queryString
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}
<!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
function doGet(e) {
  var parameters = e.parameter;
  getData(parameters);
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}

// ... 其余部分是一组标记,用于生成来自getData的查询结果表

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

我在注释中没有足够的空间来进行此操作。但这就是
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");
  }
}

您可以将查询参数传递到Web应用程序URL,您可以检查哪些查询参数以及如何使用它们。例如:

 https://www.somedomain.com/blah/blah?name=Rick
使用
e
中的
parameter
属性,可以获取包含传递给get请求的所有参数的对象。您可以在code.gs文件中直接使用这些值,例如:

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

function doGet(e) {
  var name = e.queryString
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}
<!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
function doGet(e) {
  var parameters = e.parameter;
  getData(parameters);
  return HtmlService
      .createTemplateFromFile('index')
      .evaluate();
}
获取数据

function getData() {

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

      return [pick, title, artist, name]

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

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

如何将其添加到Url中的查询字符串中。不能撒谎,我不确定这意味着什么,也不知道如何实现它。
https://www.domaint.com/blah/blah?key=value....
当我构建Multipage Web应用程序时,这是我用来访问不同页面的一种方式。好的,这就引出了第二个问题。如何将“e”从DoGet传递到“GetData”函数?我将在我的初始帖子中添加我的代码。请阅读Web应用程序的要求。这个链接刚刚放在我的答案中。