[GAS] 파일에 대한 액세스 권한을 좁히는 스크립트 (도메인의 설정도)

7362 단어 GoogleAppsScriptgas
회사에서는 G Suite를 사용하고 있지만 GoogleDrive에 있는 파일/폴더 액세스 권한은 중요하지 않습니까? 곤란한 것은 「액세스 해 버리지 않는 유저에게 액세스권이 붙어 버리는 경우」입니다.

물론 운용 룰로서 「이렇게 사용합시다」라고 하는 것은 있습니다만, 사람도 파일도 많아져, 「곧 공유하고 싶다」라고 하는 장면이 늘어나면, 잘 관리할 수 없는 케이스가 있습니다. 재검토라고 하는지, 재고라고 하는지, 무언가의 타이밍으로 하고 싶네요.

그 때에 「자꾸 가득한 사람이 추가되고 있다」가 있었습니다. 그것을 한 사람 한 사람 수동으로 "삭제"해 나가는 것이 고통이었기 때문에, 우선 "주인만 액세스 할 수 있도록 액세스 가능한 사람을 짜내기"위한 스크립트를 썼습니다. (내가 소유자의 파일 만 유효)

그런 다음 다시 "올바른"액세스 범위를 지정하려고합니다.
function changeAccessControl(fileId) {
  const file = DriveApp.getFileById(fileId);

  const me  = Session.getActiveUser().getEmail();
  if ( me !== file.getOwner().getEmail() ) {
    throw new Error(`あなたは [${file.getName()}] [${file.getUrl()}] のファイルのオーナーでは無いため、処理を中断します`);
  }

  const sharingAccess = file.getSharingAccess(); 
  file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE);

  const editors = file.getEditors();
  for (const editor of editors) {
    file.removeEditor(editor);
  } 

  const viewers = file.getViewers();
  for (const viewer of viewers) {
    file.removeViewer(viewer);
  } 
}

이번 포인트



↓ 이것은 스프레드 시트를 열고 오른쪽 상단의 "공유"를 누른 후의 화면이지만,



(1)의 부분에 대해서


  const editors = file.getEditors();
  for (const editor of editors) {
    file.removeEditor(editor);
  } 

  const viewers = file.getViewers();
  for (const viewer of viewers) {
    file.removeViewer(viewer);
  } 

에서 해당 파일의 편집자와 뷰어를 검색하고 삭제할 수 있습니다.

참조원

  • Class File  |  Apps Script  |  Google Developers

  • (2)의 부분에 대해서



    Gsuite를 사용하고 있고, 그 도메인(즉 회사·조직)에 있는 사람 전원에 대한 설정을 할 수 있는 곳입니다만,
      const sharingAccess = file.getSharingAccess(); 
      file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE);
    

    에서 지정할 수 있다는 것을 이번에 알았습니다.

    참조원
  • Enum Access  |  Apps Script  |  Google Developers
  • Enum Permission  |  Apps Script  |  Google Developers

  • 후속 재료로



    위 스크립트에서 "주인 만 액세스 할 수있는 상태"로 설정 한 후,
    「필요한 사람에게만, 필요한 권한(열람 or 편집)을 붙인다」라고 하는 처리를 추가해도 좋네요!

    ↓ 이런 느낌으로!



    누군가 부탁드립니다!

    좋은 웹페이지 즐겨찾기