Al ejecutar el script, otorgue acceso de visualización para todos los correos electrónicos (columna B), a todas las hojas de cálculo (columna A)
| URL de la hoja | Correos electrónicos |
|---|---|
| https://docs.google.com/spreadsheets/d/1 | Bob@email.com |
| https://docs.google.com/hojas de cálculo/d/2 | Juan@email.com |
function setSheetPermissions(){ //Spreadsheet that contains the Spreadsheet URL's & Emails. var ss= SpreadsheetApp.openById('spreadsheetID') // Sheet name that contains the URL's & Emails var sheet = ss.getSheetByName("Sheet1") // Get the values of all the URL's in column A var getSheetURLs = sheet.getRange("A2:A50").getValues(); // Get the values of all the emails in column B var getEmails = sheet.getRange("B2:B50").getValues(); for ( i in getEmails) getSheetURLs.addViewer(getEmails[i][0]) }getSheetIDs.addViewer no es una función (línea 26, archivo "Código")
Línea 26: getSheetURLs.addViewer(getEmails[i][0])
¿Qué estoy haciendo mal?
getSheetURLs es una matriz bidimensional. En este caso, el método addViewer no se puede usar directamente. Pensé que esta es la razón de su mensaje de error.Cuando estos puntos se reflejan en su guión, se convierte en lo siguiente.
// Get the values of all the URL's in column A var getSheetURLs = sheet.getRange("A2:A50").getValues(); // Get the values of all the emails in column B var getEmails = sheet.getRange("B2:B50").getValues(); for ( i in getEmails) getSheetURLs.addViewer(getEmails[i][0]) var values = sheet.getRange("A2:B" + sheet.getLastRow()).getValues(); values.forEach(([sheetUrl, email]) => { if (sheetUrl && email) SpreadsheetApp.openByUrl(sheetUrl + "/edit").addViewer(email); }); De su hoja de cálculo de muestra, entendí que la URL de su hoja de cálculo es como https://docs.google.com/spreadsheets/d/### . En este caso, openByUrl no se puede usar directamente. Así que agregué /edit . Si las URL de la hoja de cálculo que muestra son diferentes de la hoja de cálculo de muestra, proporcione la URL de la hoja de cálculo de muestra. Por esto, me gustaría modificar el script.
Si las URL de su hoja de cálculo real son https://docs.google.com/spreadsheets/d/### y https://docs.google.com/spreadsheets/d/###/edit , también puede usar SpreadsheetApp.openByUrl(sheetUrl + (sheetUrl.includes("/edit") ? "" : "/edit")).addViewer(email) .