¿Cómo puedo saber el límite para grupos leídos?
Estoy trabajando en la migración de una lista grande a Google Groups de Google Apps Script.
Después de la creación de miembros, estoy teniendo esta Excepción:
Excepción: Servicio invocado demasiadas veces por un día: grupos premium leer.
Hay una manera de saber la cita disponible de las lecturas para integrar esta verificación en mi código.
Esta es mi función:
function readSheet(){
var sheetId='MY-ID';
var sheet = SpreadsheetApp.openById(sheetId);
var toIgnore = 1;
var mData = sheet.getDataRange().offset(toIgnore, 0, sheet.getLastRow() - toIgnore).getValues();
for (var i = 0; i < mData.length; i++) {
/*Here verify quota*/
addUsertoGroup(mData[i][0]);
}
}
¿Cómo puedo lograr esto?
Pregunta hecha hace 3 años, 4 meses, 27 días - Por byteninja
3 Respuestas:
-
Su script alcanza una cuota o limitación.
Usted puede ver las cuotas diarias para
Groups read
en el Cuadro infra:Puedes usar una declaración de prueba..catch para ignorar el error:
function readSheet(){ var sheetId='MY-ID'; var sheet = SpreadsheetApp.openById(sheetId); var toIgnore = 1; var mData = sheet.getDataRange().offset(toIgnore, 0, sheet.getLastRow() - toIgnore).getValues(); for (var i = 0; i < mData.length; i++) { try{ addUsertoGroup(mData[i][0]); } catch(e){ console.log("The script reached the daily quota: ",e); } } }
Respondida el Dec 18, 2020 a las 22:34 - por codecraftsman32c9
Votos positivos: 0 | Votos negativos: 0 -
Para poder verificar el límite de cuántas veces puedes leer grupos por día en Google Groups, debes verificar la cuota de la API de Google Groups. Sin embargo, Google Apps Script no proporciona una forma directa de verificar el límite actual de lecturas en Google Groups.
Una forma de abordar este problema es utilizar el servicio
UrlFetchApp
, que te permitirá hacer una solicitud a la API de Google Groups para verificar el límite de cuotas restantes. Aquí te dejo un ejemplo de cómo podrías modificar tu funciónreadSheet
para incluir esta verificación de cuotas:javascript function readSheet(){ var sheetId='MY-ID'; var sheet = SpreadsheetApp.openById(sheetId); var toIgnore = 1; var mData = sheet.getDataRange().offset(toIgnore, 0, sheet.getLastRow() - toIgnore).getValues(); for (var i = 0; i < mData.length; i++) { // Aquí verificamos el límite de lecturas antes de realizar cada acción if(checkQuota()) { addUsertoGroup(mData[i][0]); } else { Logger.log('Límite de cuotas alcanzado, deteniendo la ejecución.'); break; } } } function checkQuota() { var url = 'https://www.googleapis.com/admin/directory/v1/quota'; var response = UrlFetchApp.fetch(url, {headers: {Authorization: 'Bearer ' + ScriptApp.getOAuthToken()}}); var data = JSON.parse(response.getContentText()); var remainingReads = data.quota["groups-readonly-api"]["limit"] - data.quota["groups-readonly-api"]["usage"]; if(remainingReads > 0) { Logger.log('Quota disponible: ' + remainingReads); return true; } else { Logger.log('Límite de cuotas alcanzado para grupos leídos.'); return false; } }
En este código, la función
checkQuota
realiza una solicitud a la API de Google Groups para obtener el límite de cuotas restantes. Si hay cuota disponible para lecturas de grupos, la función devuelvetrue
, de lo contrario, devuelvefalse
. Luego, en tu ciclo, verificas la cuota antes de agregar un usuario al grupo.Recuerda que necesitarás tener las credenciales y permisos adecuados para hacer estas solicitudes a la API de Google Groups.
Respondida el Dec 19, 2020 a las 22:33 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para determinar el límite de lectura de grupos de Google Apps Script, puedes utilizar el servicio Admin SDK Reports. Específicamente, puedes utilizar el método
members.usage
para recuperar información sobre el uso de grupos, que incluye el número de lecturas realizadas en un período determinado.Aquí tienes un ejemplo de cómo puedes utilizar el servicio Admin SDK Reports en Google Apps Script:
js /* Gets the usage data for a specific group. @param {string} groupId The ID of the group to retrieve usage data for. @return {Object} An object containing the usage data for the group.
- /
Una vez que tengas el objeto
usageData
, puedes comprobar la propiedadusageCount
para obtener el número de lecturas realizadas en el período especificado.Para integrar esta verificación en tu código, puedes añadir un comprobación antes de llamar a la función
addUsertoGroup()
para verificar si el límite de lectura se ha alcanzado. Aquí tienes un ejemplo:js function readSheet(){ var sheetId='MY-ID'; var sheet = SpreadsheetApp.openById(sheetId); var toIgnore = 1; var mData = sheet.getDataRange().offset(toIgnore, 0, sheet.getLastRow() - toIgnore).getValues(); for (var i = 0; i < mData.length; i++) { // Get the usage data for the group const usageData = getGroupUsage(mData[i][0]); // Check if the limit has been reached if (usageData && usageData.usageCount >= usageData.limit) { console.warn('Limit reached for group:', mData[i][0]); continue; } addUsertoGroup(mData[i][0]); } }
Ten en cuenta que el servicio Admin SDK Reports tiene sus propios límites, por lo que es importante utilizar un enfoque de reintento si se producen errores al recuperar los datos de uso.
Respondida el Dec 19, 2020 a las 22:37 - por Gemini
Votos positivos: 0 | Votos negativos: 0