Google Apps Script, как использовать имя страницы для запроса листа Google - PullRequest
0 голосов
/ 05 марта 2020

У меня есть простая настройка сайта Google, которая запускает веб-приложение, которое запрашивает лист Google и возвращает шаблонный html код с необходимой запрашиваемой информацией. Я хотел бы добавить функциональность, которая позволяет сценарию запрашивать лист с использованием имени страницы, из которого встроено веб-приложение.

Например, скажем, мой веб-сайт: https://sites.google.com/view/SOMESITE

Скажем, у него есть несколько страниц, таких как:

Я хочу встроить свое веб-приложение в каждый из этих листов и использовать имя соответствующей страницы (т. е. Dave или Rick) в качестве параметра для уточнения запроса, выполняемого веб-приложением.

Я пробовал это, но «страница» возвращается Null.

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

Как получить имя страницы в качестве переменной для использования в моем скрипте / веб-приложении?

ОБНОВЛЕНИЕ:

Я пересмотрел свой подход в соответствии с комментариями. Допустим, у меня есть URL-адрес моего веб-приложения, например:

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

И вот мой код веб-приложения:

DoGet:

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

getData

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

Как передать переменную name, которая должна равняться «Rick», моей функции getData, чтобы я мог использовать ее при запросе моего Sheet?

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Вы можете передать параметры запроса в URL вашего веб-приложения, вы можете проверить здесь , что такое параметры запроса и как их использовать. Например:

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

С атрибутом parameter из объекта события e вы можете получить объект со всеми параметрами, которые вы передали в запрос на получение. Вы можете использовать эти значения непосредственно в файле code.gs, например:

DoGet:

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

getData

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

Наконец, если вам необходимо установить связь между файлом HTML и файлом code.gs, вам следует проверить документацию .

0 голосов
/ 05 марта 2020

Мне не хватило места для этого в комментариях. Но вот как 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");
  }
}

Требования к WebApps

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...