Здравствуйте Ученики!

Эта статья продолжает мою предыдущую статью Как создать веб-API, который извлекает данные JSON из электронной таблицы Google с помощью скрипта Google Apps» и показывает, как получить данные JSON из электронной таблицы Google с помощью Google Apps. Скрипт на основе некоторых параметров. Параметры могут включать такие вещи, как идентификатор электронной почты, идентификатор ключа, имя или что-либо еще, что можно использовать для поиска строк в вашей электронной таблице Google. Давайте узнаем, как это работает.

Следующие шаги помогут нам в этом процессе:

Шаг 1.Откройте редактор скриптов Google Apps и напишите следующую функцию doGet().

var email;
var sheetname;
function doGet(event) {
sheetname = event.parameter['sheetname'];
email = event.parameter['email'];
var data = getJsonData(sheetname, email); 
 return buildSuccessResponse(data, 1);
}

email и имя листа объявлены как глобальные переменные в приведенном выше коде. Переменная event передается в функцию doGet(); это переменная, из которой мы получим параметры и их значения, которые были переданы в URL-адрес веб-API из внешнего интерфейса (позже мы увидим, как получить URL-адрес веб-API). В приведенном выше примере кода видно, что переменная event имеет два параметра: имя листа и адрес электронной почты. Эти параметры получаются с помощью атрибутов parameter. Атрибут параметра можно использовать, поместив точку (.) после переменной event и определив ключевую строку в квадратных скобках [ ]. См. пример кода ниже.

event.parameter['sheetname'];

Теперь у нас есть параметры URL-адреса веб-API и их значения. Мы передадим их функции getJsonData(), после чего объявим идентификатор электронной таблицы Google и имя листа, из которого мы будем извлекать данные.

Как и в примере кода ниже, мы видим, как параметры могут быть переданы в функцию getJsonData().

getJsonData(sheetname, email);

Шаг 2.В рамках этого шага мы создадим скрипт Google Apps для функции getJsonData() и определим идентификатор электронной таблицы и имя электронной таблицы. Пожалуйста, обратитесь к приведенному ниже примеру кода.

function getJsonData(sheetname, email){
  
 var spreadSheetId='YOUR_SPREADSHEET_ID';
  
 var ss = SpreadsheetApp.openById(spreadSheetId);
 var sheet = ss.getSheetByName("YOUR_SHEETNAME");
  
 var json_data = getData(sheetname, email);
 
  return json_data; 
}

В приведенном выше примере кода мы определили идентификатор электронной таблицы Google и имя, из которого мы будем получать данные. Порядок, в котором должна работать электронная таблица: сначала нам нужно написать идентификатор электронной таблицы, затем применить библиотечную функцию SpreadsheetApp, а затем openbyId. > чтобы получить доступ к электронной таблице, а затем написать имя таблицы, из которой мы получаем данные.

Затем мы вызвали функцию getData() и передали параметры sheetname и email для получения данных на основе условий в формате JSON.

Шаг 3.На этом шаге мы напишем код для функции getData() с параметризованными условиями. Эта функция будет иметь код, связанный со строкой данных, которые мы получаем из электронной таблицы. Давайте посмотрим на код ниже.

function getData(sheet){
  
  var jo = {};
  var i =0;
  var rows2 = sheet.getDataRange().getValues();
   Logger.clear();
//  ===============Get data=================
  var rows2=[];
  var rangeData = sheet.getDataRange();
  var values = rangeData.getValues();
  var lastColumn = rangeData.getLastColumn();
  var lastRow = rangeData.getLastRow();
  var data=[];
  var x=0,y=0;
  for(i = 0; i<lastRow; i++){
    data[x]=[];
    
    for(var j=0; j<lastColumn; j++ ){ 
// Here we are matching values with eamil  parameter
// values[i][2] will have data of emails in second column of your 
// spreadsheet 
      if(email == values[i][2]){ 
        data[x][j]= values[i][j];
        y=1;
      }
    }
    if(y==1){ x=x+1; y=0; }
 
  }
  return data;  
}

В объявленной выше функции мы использовали несколько библиотечных функций. См. определение ниже:

getDataRange(): чтобы получить диапазон электронной таблицы, в которой есть данные.

getValues(): чтобы получить значения выбранного диапазона в электронной таблице.

getLastColumn(): чтобы получить последний столбец электронной таблицы.

getLastRow(): для получения последней строки электронной таблицы.

Затем параметр email использовался для фильтрации данных на основе того же значения электронной почты. Мы использовали value[i][2], так как оно определяет второй столбец вашей электронной таблицы, который будет содержать ваши электронные письма.

Шаг 4.На этом шаге нам просто нужно определить функцию buildSuccessResponse(), которая была объявлена ​​ранее в функции doGet() в вверху примера кода.

function buildSuccessResponse(data, pages) {
  var output = JSON.stringify({
    status: 'success',
    data: data,
    pages: pages
  });
  
  return ContentService.createTextOutput(output).setMimeType(ContentService.MimeType.JSON);
}

В приведенном выше коде мы передаем весь массив, полученный из функции getJsonData(). Поскольку stringnify — это процесс получения данных массива в формате JSON, мы также можем передать некоторые параметры, такие как значение успеха, если данные были успешно отправлены в веб-API, а также другие параметры.

Шаг 5. Мы подошли к концу процесса создания API. Все, что вам нужно сделать, это развернуть весь этот код как веб-API, используя правую верхнюю опцию в редакторе сценариев Google под названием "Развернуть". Как только вы это сделаете, вы увидите URL-адрес веб-API следующим образом:

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

Приведенный выше видимый URL-адрес предназначен только для демонстрационных целей и не является рабочим URL-адресом. В этом URL-адресе вам нужно передать те параметры — имя листа и адрес электронной почты, — которые мы получили от функции doGet(). Теперь давайте посмотрим, как его можно использовать с URL-адресами веб-API.

https://script.google.com/macros/s/AKfycbyS6P2P2TUGBfqmFTrTfourZK97fB5JnVxyWTz32St8y1UwgdaYYK6jBIq1JqR1qpsi/exec?sheetname=YOUR_SHEETNAME&email=YOUR_EMAIL_VALUE

Выше вы можете видеть, что мы добавили ?sheetname=YOUR_SHEETNAME&email=YOUR_EMAIL_VALUE,после URL-адреса, чтобы включить параметры с URL-адресом веб-API, и мы можем добавить больше, добавив оператор & .

Если вы хотите изучить скрипт Google Apps и автоматизировать Google Workspace? обязательно попробуйте эту электронную книгу на тему Скрипт Google Apps: руководство для начинающих».

Я надеюсь, что прочитав эту статью, вы сможете создать свой собственный веб-API, чтобы получать данные из электронной таблицы Google на свои веб-страницы на основе параметров.

Пожалуйста, оставьте комментарий, если у вас есть какие-либо вопросы. Я буду рад помочь.

Счастливого обучения!