Bagaimana menambahkan parameter pagination di Google Script
Saya mencoba menggunakan Google Script untuk mengurai Google Sheets sebagai JSON. Tetapi masalahnya adalah data menunjukkan semua dalam satu waktu
https://script.googleusercontent.com/macros/echo?user_content_key=wuq_9LI3vgIatlNAP4hjntylItBcH61LXYXvFpbC5h_um48YgvDXJOZdI2Sbwn2-leov9vWqBZxfs0iksGahfK1YyUi4kexzm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnPRXzlSQpAo7NiD1uFvfd55kniGZfmcNCMpPtY_76TwXPVOG9f0Yl_uIsvXmrtpvNgmu1XJIo47X&lib=MpD4s_Dhs12GOOkdpgVYeR4F8VEIE0aCI
bagaimana cara membuat parameter URL like ?page=1dan limit=10per halaman?
Ini kode saya:
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);
}
Jawaban
Saya yakin tujuan Anda sebagai berikut.
- Anda ingin mengembalikan nilai dari baris 1 ke baris 10 dengan meminta dengan parameter kueri
?page=1&limit=10ke URL Aplikasi Web menggunakan Skrip Google Apps. - Di skrip Anda, Anda ingin mengembalikan nilai seperti
{"user":[{"id":"###","year":"###","title":"###","img":"###"},,,]}.
Poin modifikasi:
- Dalam naskah Anda,
- Parameter kueri tidak diambil.
- Nomor halaman dan batas tidak diumumkan.
var rows = sheet.getRange(5, 1, sheet.getLastRow()-1, sheet.getLastColumn()).getValues();ditimpa olehvar rows = sheet.getDataRange().getValues();.- Saya pikir ini adalah alasan masalah Anda
But the problem is data shows all in one time.
- Untuk mengambil parameter kueri, Anda dapat menggunakan objek acara
edaridoGet(e).
Ketika poin di atas direfleksikan ke naskah Anda, itu menjadi sebagai berikut.
Skrip yang dimodifikasi:
Harap salin dan tempel skrip berikut ke editor skrip. Dan harap terapkan ulang Aplikasi Web sebagai versi baru. Dengan ini, skrip terbaru direfleksikan ke Aplikasi Web. Harap berhati-hati ini.
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);
}
- Dalam modifikasi ini, saat Anda mengakses
https://script.google.com/macros/s/###/exec?page=1&limit=10, nilai dari baris 1 ke baris 10 dikembalikan. Saat Anda mengakseshttps://script.google.com/macros/s/###/exec?page=3&limit=10, nilai dari baris 21 hingga baris 30 dikembalikan. - Saat Anda mengakses
https://script.google.com/macros/s/###/exec, nilai dari baris 1 hingga baris 10 dikembalikan.
Referensi:
- Aplikasi Web
- Memanfaatkan Aplikasi Web dengan Google Apps Script