Google Script'e sayfalandırma parametresi nasıl eklenir?
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
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ırvar 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ındadoGet(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ğinizdehttps://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