Comment ajouter un paramètre de pagination dans Google Script
J'essaie d'utiliser Google Script pour analyser Google Sheets en tant que JSON. Mais le problème est que les données s'affichent en une seule fois
https://script.googleusercontent.com/macros/echo?user_content_key=wuq_9LI3vgIatlNAP4hjntylItBcH61LXYXvFpbC5h_um48YgvDXJOZdI2Sbwn2-leov9vWqBZxfs0iksGahfK1YyUi4kexzm5_BxDlH2jW0nuo2oDemN9CCS2h10ox_1xSncGQajx_ryfhECjZEnPRXzlSQpAo7NiD1uFvfd55kniGZfmcNCMpPtY_76TwXPVOG9f0Yl_uIsvXmrtpvNgmu1XJIo47X&lib=MpD4s_Dhs12GOOkdpgVYeR4F8VEIE0aCI
comment créer une URL de paramètre comme ?page=1et limit=10par page?
Voici mon code:
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);
}
Réponses
Je crois que votre objectif est le suivant.
- Vous souhaitez renvoyer les valeurs de la ligne 1 à la ligne 10 en effectuant une demande avec le paramètre de requête de
?page=1&limit=10à l'URL Web Apps à l'aide de Google Apps Script. - Dans votre script, vous souhaitez renvoyer les valeurs telles que
{"user":[{"id":"###","year":"###","title":"###","img":"###"},,,]}.
Points de modification:
- Dans votre script,
- Le paramètre de requête n'est pas récupéré.
- Le numéro de page et la limite ne sont pas déclarés.
var rows = sheet.getRange(5, 1, sheet.getLastRow()-1, sheet.getLastColumn()).getValues();est écrasé parvar rows = sheet.getDataRange().getValues();.- Je pense que ce sont là la raison de votre problème
But the problem is data shows all in one time.
- Afin de récupérer le paramètre de requête, vous pouvez utiliser l'objet événement de
eofdoGet(e).
Lorsque les points ci-dessus sont reflétés dans votre script, cela devient comme suit.
Script modifié:
Veuillez copier et coller le script suivant dans l'éditeur de script. Et veuillez redéployer les applications Web en tant que nouvelle version. Ainsi, le dernier script est reflété dans les applications Web. Veuillez faire attention à cela.
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);
}
- Dans cette modification, lorsque vous accédez à
https://script.google.com/macros/s/###/exec?page=1&limit=10, les valeurs de la ligne 1 à la ligne 10 sont renvoyées. Lorsque vous accédez àhttps://script.google.com/macros/s/###/exec?page=3&limit=10, les valeurs de la ligne 21 à la ligne 30 sont renvoyées. - Lorsque vous accédez à
https://script.google.com/macros/s/###/exec, les valeurs de la ligne 1 à la ligne 10 sont renvoyées.
Références:
- Applications Web
- Tirer parti des applications Web avec Google Apps Script