0

Donc je veux pouvoir créer une feuille, la peupler avec quelques données, et créer une colonne utilisée pour l'entrée, mais je veux protéger tous autres cellules. J'utilise Java/eclipse pour exécuter l'API.API Google Spreadsheet v4 en Java. Essayer d'avoir une plage de cellules non protégées sur un document qui peut être consulté par n'importe qui avec le lien

Le problème que je rencontre semble être un bug quelconque. Quand j'ouvre le document, il m'avertit que je (le propriétaire) suis le seul qui peut éditer la gamme, mais une fois connecté dans une fenêtre de navigation privée il indique que "Vous et un autre utilisateur pouvez éditer cette feuille". N'importe qui avec le lien peut éditer n'importe quelle cellule dans le document, en dépit de lui indiquant que "Sheet1 excepté A1: A18" dans les gammes protégées. Étrange chose que j'ai remarqué aussi, si je deviens propriétaire en Protected Ranges, cliquez sur ma gamme générée et cliquez sur Autorisations -> Terminé, il finalise ma gamme à la façon dont il devrait se comporter. Le problème est dans le produit final que je ne peux pas entrer dans ces dossiers manuellement.

L'ordre dans lequel je vais est: Créer un fichier -> Ajouter des données -> Définir une plage non protégée -> Définir une vue accessible à tous avec un lien.

Après avoir ajouté la plage, la feuille elle-même ressemble exactement à ce qu'elle serait si je devais l'ajouter, mais elle ne se comporte pas de la même manière. Quelqu'un at-il eu de la chance avec ce processus? J'ai inclus ma demande pour la gamme protégée ci-dessous.

Si vous avez besoin de plus d'informations, je vais essayer de vous répondre dans les plus brefs délais.

public Request unProtectRange(String id, GridRange range) { 
    List<GridRange> grids = new ArrayList<GridRange>(); 
    grids.add(range); 
    return new Request() 
     .setAddProtectedRange(new AddProtectedRangeRequest() 
      .setProtectedRange(new ProtectedRange() 
       .setRequestingUserCanEdit(false) 
        .setRange(new GridRange()) 
         .setUnprotectedRanges(grids))); 
} 

Répondre

1

Il y a quelques problèmes ici. Par les ProtectedRange docs ...

  • Le champ requestingUserCanEdit est en lecture seule, pour que le réglage qui n'a eu aucun impact.
  • Le champ editors n'est pas défini. La plage protégée n'est donc pas protégée. Il a par défaut les mêmes contrôles d'accès que la feuille de calcul elle-même. Vous devez définir les éditeurs sur un objet Editors valide.
  • Le GridRange ne possède pas d'ID sheetId. Cela signifie que l'ID de feuille 0 sera défini par défaut. Vous souhaitez probablement définir explicitement l'ID de feuille.
+0

Merci, je vais essayer ça. – Andrew

+0

Cela a fonctionné! Merci beaucoup! – Andrew

+0

@Andrew, si cela a fonctionné, marquez ceci comme la réponse acceptée. –