0

シートを作成し、データを入力し、入力用の列を作成したいが、すべてを保護したい他の細胞。私はAPIを実行するためにJava/eclipseを使用しています。GoogleスプレッドシートAPI v4 Javaの場合。

私が抱えている問題は、何らかのバグであるようです。ドキュメントを開くと、自分(所有者)が範囲を編集できる唯一の人だと通知されますが、シークレットウィンドウにログインすると「あなたと他の1人のユーザーがこのシートを編集できます」と表示されます。誰でもリンクがあれば、保護された範囲内の "Sheet1 A1:A18"以外にも、文書内のセルを編集できます。

奇妙なことに、私が所有者として保護範囲に入る場合は、生成された範囲をクリックし、アクセス権 - >完了をクリックして、動作範囲を確定します。最終製品に問題があります。これらのファイルに手作業で行くことはできません。

私が行っている注文は: ファイルの作成 - >データの追加 - >保護されていない範囲の設定 - >リンク付きの誰でも閲覧可能な設定

範囲を追加した後、それを自分で追加した場合と同じようにシート自体を見ていますが、同じように動作しません。誰もこのプロセスで運があったのですか?私は以下の保護された範囲に対する私の要求を含んでいます。

これ以上の情報が必要な場合は、できるだけ早く対応を試みます。

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))); 
} 

答えて

1

ここにいくつかの問題があります。 ProtectedRangeドキュメントあたり...

  • requestingUserCanEditフィールドは読み取り専用であるため、影響を与えなかった設定。
  • editorsフィールドが設定されていないため、保護された範囲は実際に保護されていません。デフォルトでは、スプレッドシート自体と同じアクセス制御が行われます。有効なEditorsオブジェクトにエディタを設定する必要があります。
  • GridRangeにsheetIdが設定されていません。つまり、シートID 0がデフォルトになります。シートIDを明示的に設定したいと思うかもしれません。
+0

ありがとうございます。これを試していただきます。 – Andrew

+0

これは機能しました!どうもありがとうございます! – Andrew

+0

@Andrew、うまくいけば、これを受け入れられた答えとしてください。 –

関連する問題