Google Drive: File Permissions, Remove AnyoneWithLink
Google Drive: File Permissions, Remove AnyoneWithLink
Deletes AnyoneWithLink permission (a Reader permission to anyone who has the link) from the file. There is no change in the other permissions for the file.
Configs
  • A: Select Authorization Setting (OAuth2) *
  • B: Set File ID (fileId) *#{EL}
Script (click to open)
// GraalJS Script (engine type: 2)
/*
Notes(en):
- This request requires authorization with at least one of the following scopes:
    - https://www.googleapis.com/auth/drive
    - https://www.googleapis.com/auth/drive.file (only files created by the app)
- Supports both My Drives and shared drives. Shared-with-me are also referable.
- No error will occur even if you execute it while it has already been deleted.
Notes(ja):
- ファイル権限を持つユーザにより、OAuth認可される必要があります。(以下のうち少なくとも1つ)
    - https://www.googleapis.com/auth/drive
    - https://www.googleapis.com/auth/drive.file
- マイドライブと共有ドライブの両方をサポートします。共有アイテムも参照可能です。
- すでに削除済みの状態で実行してもエラーにはなりません。
Notes:
- To Get "ClientId" and "Secret"
    - Access to https://console.developers.google.com/
- OAuth Setting sample
    - "Authorization Endpoint URL"
        - https://accounts.google.com/o/oauth2/auth?access_type=offline&approval_prompt=force
    - "Token Endpoint URL"
        - https://accounts.google.com/o/oauth2/token
    - "Scope"
        - https://www.googleapis.com/auth/drive.file
- Error Log sample (wrong fileId or Scope)
    - AutomatedTask UnexpectedResponseError: 404
        - { "error": {
        - "errors": [ {
            - "domain": "global",
            - "reason": "notFound",
            - "message": "File not found: 1lKhxxxxcQ2Fxxxx1d0lxxxxCftexxxxQ.",
            - "locationType": "parameter",
            - "location": "fileId"
        - } ],
        - "code": 404,
        - "message": "File not found: 1lKhxxxxcQ2Fxxxx1d0lxxxxCftexxxxQ."
        - } }

*/

//////// START "main()" /////////////////////////////////////////////////////////////////
main();
function main(){ 

//// == Config Retrieving / 工程コンフィグの参照 ==
const strOauthSetting     = configs.get      ( "OAuth2ConfA" );   // required
const strFileId           = configs.get      ( "StrConfB" ) + ""; // required


//// == Data Retrieving / ワークフローデータの参照 ==
// (nothing)


//// == Calculating / 演算 ==

// prepare request1
// ref) https://developers.google.com
//            /drive/api/v3/reference/permissions/delete
let uri1     = "https://www.googleapis.com/drive/v3/files/" +
                strFileId + "/permissions/anyoneWithLink";
const token  = httpClient.getOAuth2Token( strOauthSetting );
let request1 = httpClient.begin(); // HttpRequestWrapper
    request1 = request1.bearer( token );
    request1 = request1.queryParam( "supportsAllDrives", "true" );
engine.log( " AutomatedTask ApiRequest Prepared" );

// delete request1
const response1     = request1.delete( uri1 );       // HttpResponseWrapper
engine.log( " AutomatedTask Request1 Start: " + uri1 );
const response1Code = response1.getStatusCode() + ""; // (primitive string)
const response1Body = response1.getResponseAsString() + "";
engine.log( " AutomatedTask Response1 Status: " + response1Code );
if( response1Code !== "204"){
  throw new Error( "\n AutomatedTask UnexpectedResponseError: " +
                    response1Code + "\n" + response1Body + "\n" );
}

// parse response1
// (nothing)
/* engine.log( response1Body ); // debug
response sample
""
*/


//// == Data Updating / ワークフローデータへの代入 ==
// (nothing)

} //////// END "main()" /////////////////////////////////////////////////////////////////

Download

2020-10-05 (C) Questetra, Inc. (MIT License)
https://support.questetra.com/addons/google-drive-file-permissions-remove-anyonewithlink/
The Addon-import feature is available with Professional or Enterprise edition.

Notes

Capture

Deletes AnyoneWithLink permission (a Reader permission to anyone who has the link) from the file. There is no change in the other permissions for the file.

See also

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: