Google Script'e sayfalandırma parametresi nasıl eklenir?

Oct 07 2020

Google E-Tabloları JSON olarak ayrıştırmak için Google Script'i kullanmaya çalışıyorum. Ancak sorun, verilerin hepsini tek seferde göstermesidir

https://script.googleusercontent.com/macros/echo?user_content_key=wuq_9LI3vgIatlNAP4hjntylItBcH61LXYXvFpbC5h_um48YgvDXJOZdI2Sbwn2-leov9vWqBZxfs0iksGahfK1YyUi4kexzm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnPRXzlSQpAo7NiD1uFvfd55kniGZfmcNCMpPtY_76TwXPVOG9f0Yl_uIsvXmrtpvNgmu1XJIo47X&lib=MpD4s_Dhs12GOOkdpgVYeR4F8VEIE0aCI

nasıl böyle bir parametre URL oluşturmak ?page=1ve limit=10sayfa başına?

Bu benim kodum:

function doGet(e){

 // url
 var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/10S8Igzt1tpqUBgJHVKpny-2s6G3Y3-vFsLMvlZVqpkc/edit#gid=810612111");

 var sheet = ss.getSheetByName("list_film");
 return getUsers(sheet); 
}
function getUsers(sheet){
  var jo = {};
  var dataArray = [];
  var rows = sheet.getRange(5, 1, sheet.getLastRow()-1, sheet.getLastColumn()).getValues();
  var rows = sheet.getDataRange().getValues();
  
  for(var i = 0, l= rows.length; i<l ; i++){
    var dataRow = rows[i];
    var record = {};
    record['id'] = dataRow[0];
    record['year'] = dataRow[1];
    record['title'] = dataRow[2];
    record['img'] = dataRow[3];
    
    dataArray.push(record);
    
  }  
  
  jo.user = dataArray;
  var result = JSON.stringify(jo);
  return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
  
}  

Yanıtlar

1 Tanaike Oct 07 2020 at 12:42

Amacınızın aşağıdaki gibi olduğuna inanıyorum.

  • ?page=1&limit=10Google Apps Komut Dosyasını kullanarak Web Apps URL'sine sorgusu parametresiyle istekte bulunarak 1. satırdan 10. satıra kadar olan değerleri döndürmek istiyorsunuz .
  • Komut dosyanızda, gibi değerleri döndürmek istiyorsunuz {"user":[{"id":"###","year":"###","title":"###","img":"###"},,,]}.

Değişiklik noktaları:

  • Senaryonuzda,
    • Sorgu parametresi alınmadı.
    • Sayfa numarası ve limit beyan edilmemiştir.
    • var rows = sheet.getRange(5, 1, sheet.getLastRow()-1, sheet.getLastColumn()).getValues();üzerine yazılır var rows = sheet.getDataRange().getValues();.
    • Sanırım sorununun nedeni bunlar But the problem is data shows all in one time.
  • Sorgu parametresini almak için, olay nesnesini kullanabilirsiniz earasında doGet(e).

Yukarıdaki noktalar senaryonuza yansıtıldığında aşağıdaki gibi olur.

Değiştirilmiş komut dosyası:

Lütfen aşağıdaki komut dosyasını kopyalayıp komut dosyası düzenleyicisine yapıştırın. Ve lütfen Web Uygulamalarını yeni sürüm olarak yeniden dağıtın. Bununla, en son komut dosyası Web Uygulamalarına yansıtılır. Lütfen buna dikkat edin.

function doGet(e) {
  var page = e.parameter.page || 1;
  var limit = e.parameter.limit || 10;
  var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/10S8Igzt1tpqUBgJHVKpny-2s6G3Y3-vFsLMvlZVqpkc/edit#gid=810612111");
  var sheet = ss.getSheetByName("list_film");
  return getUsers(sheet, page, limit); 
}

function getUsers(sheet, page, limit){
  var rows = sheet.getDataRange().getValues();
  var dataArray = rows.splice(limit * (page - 1), limit).reduce((ar, [a, b, c, d]) => ar.concat({id: a, year: b, title: c, img: d}), []);
  var jo = {};
  jo.user = dataArray;
  var result = JSON.stringify(jo);
  return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
}
  • Bu değişiklikte öğesine eriştiğinizde https://script.google.com/macros/s/###/exec?page=1&limit=101. satırdan 10. satıra kadar olan değerler döndürülür. Öğesine eriştiğinizde https://script.google.com/macros/s/###/exec?page=3&limit=10, satır 21'den satır 30'a kadar olan değerler döndürülür.
  • Öğesine eriştiğinizde https://script.google.com/macros/s/###/exec, 1. satırdan 10. satıra kadar olan değerler döndürülür.

Referanslar:

  • ağ uygulamaları
  • Google Apps Komut Dosyası ile Web Uygulamalarından yararlanma