{"id":17121,"date":"2025-01-12T11:53:56","date_gmt":"2025-01-12T02:53:56","guid":{"rendered":"https:\/\/84office.jp\/?p=17121"},"modified":"2025-01-13T16:54:32","modified_gmt":"2025-01-13T07:54:32","slug":"file-access-rights-change-setup","status":"publish","type":"post","link":"https:\/\/84office.jp\/en\/file-access-rights-change-setup\/","title":{"rendered":"Effortlessly Manage and Modify Spreadsheet Permissions Using Google Apps Script: Preparation Guide"},"content":{"rendered":"<div class=\"codoc-evacuations\" style=\"display:none;\" data-shortcode=\"\"><\/div>\n<p>Have you ever struggled with the tedious task of reviewing and modifying sharing settings for individual files, such as spreadsheets or documents?<\/p>\n\n\n\n<p>This process can become particularly time-consuming and inefficient when dealing with a large number of files.<\/p>\n\n\n\n<p>If there were a way to manage permissions for multiple files at once, it could significantly reduce the time spent on these tasks.<\/p>\n\n\n\n<p>In this article, we\u2019ll introduce how to use Google Apps Script to list the current access permissions of your spreadsheet files.<\/p>\n\n\n\n<p>This method allows you to easily review file-sharing settings, making future access management more efficient.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">Since the process involves two separate scripts, this article will focus on displaying the current permissions for each file. In our next article, we\u2019ll cover how to modify those permissions in bulk.<\/p>\n\n\n<div class=\"swell-block-postLink u-mb-ctrl u-mb-60\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/35be3fc9ba0d9059d3d97059dd2f70ee-300x158.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/84office.jp\/https-84office-jp-file-access-rights-change-batch\/\">GAS\u3092\u4f7f\u3063\u3066\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u3092\u307e\u3068\u3081\u3066\u7ba1\u7406\u30fb\u5909\u66f4\uff08\u5909\u66f4\u7de8\uff09<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">\u524d\u56de\u306e\u8a18\u4e8b\u3067\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4e00\u89a7\u5316\u3059\u308b\u65b9\u6cd5\u3092\u3054\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002 \u4eca\u56de\u306f\u3001\u305d\u306e\u53d6\u5f97\u3057\u305f\u60c5\u5831\u3092\u57fa\u306b\u3057\u3066\u3001\u8907\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4e00\u62ec\u3067\u5909&#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n\n<h2 class=\"wp-block-heading\">Example Output<\/h2>\n\n\n\n<p><strong>Current Access Permissions (Columns A\u2013F)<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-30\"><img decoding=\"async\" width=\"1024\" height=\"255\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-1024x255.png\" alt=\"\" class=\"wp-image-17126\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-1024x255.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-300x75.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-768x191.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-1536x382.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37.png 2009w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Permission Change Input Fields (Columns G\u2013M)<\/strong><\/p>\n\n\n<div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-full\"><img decoding=\"async\" width=\"1605\" height=\"557\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36.png\" alt=\"\" class=\"wp-image-17125\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36.png 1605w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-300x104.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-1024x355.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-768x267.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-1536x533.png 1536w\" sizes=\"(max-width: 1605px) 100vw, 1605px\" \/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list has-border -border02 u-mb-ctrl u-mb-50 has-swl-pale-03-background-color has-background\">\n<li>Display the current access permissions as a list.<\/li>\n\n\n\n<li>Create input fields for permission changes.<\/li>\n<\/ul>\n\n\n\n<p>The spreadsheet will display the following information:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Folder Name<\/strong> for each file<\/li>\n\n\n\n<li><strong>File Name<\/strong><\/li>\n\n\n\n<li><strong>Access Permissions<\/strong><\/li>\n\n\n\n<li><strong>Email Addresses<\/strong> of the owner, viewers, and editors<\/li>\n<\/ul>\n\n\n\n<p>In addition to reviewing access permissions, the spreadsheet will also include input fields for modifying permissions. These fields will be prepared in this article, ensuring that you\u2019re ready to implement permission changes in the next article.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Steps<\/h2>\n\n\n\n<div class=\"swell-block-step u-mb-ctrl u-mb-40\" data-num-style=\"circle\">\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\">Open the Spreadsheet<\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"488\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-38-1024x488.png\" alt=\"\" class=\"wp-image-17127\" style=\"width:563px;height:auto\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-38-1024x488.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-38-300x143.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-38-768x366.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-38.png 1298w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p>Open a Google Spreadsheet.<br>(Both existing or new files are supported.)<\/p>\n\n\n\n<p>Since the script will automatically create all necessary items, no manual input is required.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The <strong>first row headers<\/strong> will be entered by Google Apps Script.<\/li>\n\n\n\n<li>A new sheet named <strong>&#8220;Access Management&#8221;<\/strong> will also be created by the script.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\">Open Apps Script Editor<\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-full is-resized\"><img decoding=\"async\" width=\"933\" height=\"591\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/98efceb7a335447039dff05eb8d70d3d.png\" alt=\"\" class=\"wp-image-16537\" style=\"width:447px;height:auto\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/98efceb7a335447039dff05eb8d70d3d.png 933w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/98efceb7a335447039dff05eb8d70d3d-300x190.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/98efceb7a335447039dff05eb8d70d3d-768x486.png 768w\" sizes=\"(max-width: 933px) 100vw, 933px\" \/><\/figure>\n<\/div>\n\n\n<p>Open a Google Spreadsheet and click on \u201c<strong>Extensions<\/strong>\u201d in the menu, then \u201c<strong>Apps Script<\/strong>\u201d to open the Apps Script editor.<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\"><strong>Create the Script<\/strong><\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-large\"><img decoding=\"async\" width=\"1024\" height=\"472\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662-1024x472.png\" alt=\"\" class=\"wp-image-16191\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662-1024x472.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662-300x138.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662-768x354.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/e5e524d3405a7a1c3cfaaf3f2b1cc662.png 1387w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"u-mb-ctrl u-mb-40\">Since the default <code>function myFunction() {}<\/code> is present, delete it and replace it with the script below.<\/p>\n\n\n\n<p>It&#8217;s a long script, but there&#8217;s a copy button in the top-right corner of the code block.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"function listFilesAndManageAccess() {\n  const ui = SpreadsheetApp.getUi();\n  const response = ui.prompt(\n    'Specify a Folder',\n    'Enter &quot;All Files in Drive&quot; or specify a folder name or folder ID:',\n    ui.ButtonSet.OK_CANCEL\n  );\n\n  if (response.getSelectedButton() === ui.Button.CANCEL) {\n    ui.alert('Operation cancelled.');\n    return;\n  }\n\n  const input = response.getResponseText().trim();\n  \n  \/\/ Handle input for &quot;All Files in Drive&quot; or a specific folder\n  if (input === 'All Files in Drive') {\n    listAllFiles();\n  } else {\n    listFilesInFolder(input);\n  }\n}\n\nfunction listAllFiles() {\n  const sheet = setupSheet();\n  const files = DriveApp.getFiles();\n  let row = 2;\n\n  while (files.hasNext()) {\n    const file = files.next();\n    appendFileDataToSheet(sheet, file, row);\n    row++;\n  }\n}\n\nfunction listFilesInFolder(folderNameOrId) {\n  const sheet = setupSheet();\n  let folder;\n  \n  try {\n    folder = DriveApp.getFolderById(folderNameOrId);\n  } catch (e) {\n    const folders = DriveApp.getFoldersByName(folderNameOrId);\n    if (folders.hasNext()) {\n      folder = folders.next();\n    } else {\n      SpreadsheetApp.getUi().alert('Folder not found.');\n      return;\n    }\n  }\n  \n  const files = folder.getFiles();\n  let row = 2;\n\n  while (files.hasNext()) {\n    const file = files.next();\n    appendFileDataToSheet(sheet, file, row);\n    row++;\n  }\n}\n\nfunction setupSheet() {\n  const sheetName = 'Access Management';\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName) || SpreadsheetApp.getActiveSpreadsheet().insertSheet(sheetName);\n  \n  \/\/ Clear and reset the sheet\n  sheet.clear();\n  \n  \/\/ Set headers\n  const headers = [\n    'Folder Name', \n    'File Name', \n    'Current Permissions', \n    'Owner', \n    'Viewers (Including Commenters)', \n    'Editors', \n    'Change Target', \n    'New Permissions', \n    'Remove Viewers', \n    'Remove Editors', \n    'Add Viewers', \n    'Add Editors', \n    'Timestamp'\n  ];\n  \n  sheet.appendRow(headers);\n  const headerRange = sheet.getRange(1, 1, 1, headers.length);\n  headerRange.setHorizontalAlignment('center');\n  headerRange.setVerticalAlignment('middle');\n  \n  \/\/ Color-code headers\n  const greenHeadersRange = sheet.getRange(1, 1, 1, 6);\n  const orangeHeadersRange = sheet.getRange(1, 8, 1, 6);\n  \n  greenHeadersRange.setBackground('#B7E1CD'); \/\/ Light Green\n  orangeHeadersRange.setBackground('#FAD7AC'); \/\/ Light Orange\n  \n  \/\/ Add dropdown options for &quot;New Permissions&quot; column\n  const permissions = [\n    'Anyone with the link (View)', \n    'Anyone with the link (Comment)', \n    'Anyone with the link (Edit)', \n    'Restricted'\n  ];\n  const validation = SpreadsheetApp.newDataValidation().requireValueInList(permissions).build();\n  sheet.getRange(2, 8, sheet.getMaxRows() - 1).setDataValidation(validation);\n  \n  return sheet;\n}\n\nfunction appendFileDataToSheet(sheet, file, row) {\n  const folderName = getFolderName(file);\n  const fileName = file.getName();\n  const fileLink = file.getUrl();\n  const currentPermission = translatePermission(file.getSharingAccess(), file.getSharingPermission());\n\n  \/\/ Append file data with a hyperlink for the file name\n  sheet.getRange(row, 1).setValue(folderName);\n  sheet.getRange(row, 2).setFormula(`=HYPERLINK(&quot;${fileLink}&quot;, &quot;${fileName}&quot;)`);\n  sheet.getRange(row, 3).setValue(currentPermission);\n  \n  \/\/ Retrieve member details\n  const viewers = file.getViewers().map(user =&gt; user.getEmail());\n  const editors = file.getEditors().map(user =&gt; user.getEmail());\n  \n  \/\/ Safely get the owner's email\n  const owner = file.getOwner() ? file.getOwner().getEmail() : 'No Owner';\n\n  \/\/ Populate member details in respective columns\n  sheet.getRange(row, 4).setValue(owner);\n  sheet.getRange(row, 5).setValue(viewers.join(', '));\n  sheet.getRange(row, 6).setValue(editors.join(', '));\n  sheet.getRange(row, 7).insertCheckboxes(); \/\/ Add checkboxes for changes\n}\n\nfunction getFolderName(file) {\n  const parents = file.getParents();\n  return parents.hasNext() ? parents.next().getName() : 'Root';\n}\n\nfunction translatePermission(access, permission) {\n  const accessMap = {\n    [DriveApp.Access.ANYONE]: 'Anyone',\n    [DriveApp.Access.ANYONE_WITH_LINK]: 'Anyone with the link',\n    [DriveApp.Access.PRIVATE]: 'Restricted'\n  };\n  const permissionMap = {\n    [DriveApp.Permission.VIEW]: 'View',\n    [DriveApp.Permission.COMMENT]: 'Comment',\n    [DriveApp.Permission.EDIT]: 'Edit'\n  };\n\n  if (access === DriveApp.Access.PRIVATE) {\n    return accessMap[access];\n  } else {\n    return `${accessMap[access] || 'Unknown'} (${permissionMap[permission] || 'Unknown'})`;\n  }\n}\n\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">listFilesAndManageAccess<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> ui <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getUi<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> response <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> ui.<\/span><span style=\"color: #A6E22E\">prompt<\/span><span style=\"color: #F8F8F2\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Specify a Folder&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Enter &quot;All Files in Drive&quot; or specify a folder name or folder ID:&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    ui.ButtonSet.OK_CANCEL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (response.<\/span><span style=\"color: #A6E22E\">getSelectedButton<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> ui.Button.CANCEL) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    ui.<\/span><span style=\"color: #A6E22E\">alert<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Operation cancelled.&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> input <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> response.<\/span><span style=\"color: #A6E22E\">getResponseText<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Handle input for &quot;All Files in Drive&quot; or a specific folder<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (input <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;All Files in Drive&#39;<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #A6E22E\">listAllFiles<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #A6E22E\">listFilesInFolder<\/span><span style=\"color: #F8F8F2\">(input);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">listAllFiles<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheet <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">setupSheet<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> files <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> DriveApp.<\/span><span style=\"color: #A6E22E\">getFiles<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> row <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">while<\/span><span style=\"color: #F8F8F2\"> (files.<\/span><span style=\"color: #A6E22E\">hasNext<\/span><span style=\"color: #F8F8F2\">()) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> file <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> files.<\/span><span style=\"color: #A6E22E\">next<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #A6E22E\">appendFileDataToSheet<\/span><span style=\"color: #F8F8F2\">(sheet, file, row);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    row<\/span><span style=\"color: #F92672\">++<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">listFilesInFolder<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">folderNameOrId<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheet <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">setupSheet<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> folder;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">try<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    folder <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> DriveApp.<\/span><span style=\"color: #A6E22E\">getFolderById<\/span><span style=\"color: #F8F8F2\">(folderNameOrId);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  } <\/span><span style=\"color: #F92672\">catch<\/span><span style=\"color: #F8F8F2\"> (e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> folders <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> DriveApp.<\/span><span style=\"color: #A6E22E\">getFoldersByName<\/span><span style=\"color: #F8F8F2\">(folderNameOrId);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (folders.<\/span><span style=\"color: #A6E22E\">hasNext<\/span><span style=\"color: #F8F8F2\">()) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      folder <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> folders.<\/span><span style=\"color: #A6E22E\">next<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getUi<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">alert<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Folder not found.&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> files <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> folder.<\/span><span style=\"color: #A6E22E\">getFiles<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> row <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">while<\/span><span style=\"color: #F8F8F2\"> (files.<\/span><span style=\"color: #A6E22E\">hasNext<\/span><span style=\"color: #F8F8F2\">()) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> file <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> files.<\/span><span style=\"color: #A6E22E\">next<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #A6E22E\">appendFileDataToSheet<\/span><span style=\"color: #F8F8F2\">(sheet, file, row);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    row<\/span><span style=\"color: #F92672\">++<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">setupSheet<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheetName <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Access Management&#39;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheet <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getActiveSpreadsheet<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getSheetByName<\/span><span style=\"color: #F8F8F2\">(sheetName) <\/span><span style=\"color: #F92672\">||<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getActiveSpreadsheet<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">insertSheet<\/span><span style=\"color: #F8F8F2\">(sheetName);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Clear and reset the sheet<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">clear<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Set headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Folder Name&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;File Name&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Current Permissions&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Owner&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Viewers (Including Commenters)&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Editors&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Change Target&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;New Permissions&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Remove Viewers&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Remove Editors&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Add Viewers&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Add Editors&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Timestamp&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  ];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">appendRow<\/span><span style=\"color: #F8F8F2\">(headers);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headerRange <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, headers.length);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  headerRange.<\/span><span style=\"color: #A6E22E\">setHorizontalAlignment<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;center&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  headerRange.<\/span><span style=\"color: #A6E22E\">setVerticalAlignment<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;middle&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Color-code headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> greenHeadersRange <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">6<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> orangeHeadersRange <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">8<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">6<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  greenHeadersRange.<\/span><span style=\"color: #A6E22E\">setBackground<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;#B7E1CD&#39;<\/span><span style=\"color: #F8F8F2\">); <\/span><span style=\"color: #88846F\">\/\/ Light Green<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  orangeHeadersRange.<\/span><span style=\"color: #A6E22E\">setBackground<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;#FAD7AC&#39;<\/span><span style=\"color: #F8F8F2\">); <\/span><span style=\"color: #88846F\">\/\/ Light Orange<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Add dropdown options for &quot;New Permissions&quot; column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> permissions <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Anyone with the link (View)&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Anyone with the link (Comment)&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Anyone with the link (Edit)&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Restricted&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  ];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> validation <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">newDataValidation<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">requireValueInList<\/span><span style=\"color: #F8F8F2\">(permissions).<\/span><span style=\"color: #A6E22E\">build<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">8<\/span><span style=\"color: #F8F8F2\">, sheet.<\/span><span style=\"color: #A6E22E\">getMaxRows<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">-<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setDataValidation<\/span><span style=\"color: #F8F8F2\">(validation);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> sheet;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">appendFileDataToSheet<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">sheet<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">file<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">row<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> folderName <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getFolderName<\/span><span style=\"color: #F8F8F2\">(file);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> fileName <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getName<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> fileLink <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getUrl<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> currentPermission <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">translatePermission<\/span><span style=\"color: #F8F8F2\">(file.<\/span><span style=\"color: #A6E22E\">getSharingAccess<\/span><span style=\"color: #F8F8F2\">(), file.<\/span><span style=\"color: #A6E22E\">getSharingPermission<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Append file data with a hyperlink for the file name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(folderName);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setFormula<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">`=HYPERLINK(&quot;<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">fileLink<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">&quot;, &quot;<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">fileName<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">&quot;)`<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">3<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(currentPermission);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Retrieve member details<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> viewers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getViewers<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">user<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> user.<\/span><span style=\"color: #A6E22E\">getEmail<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> editors <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getEditors<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">user<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> user.<\/span><span style=\"color: #A6E22E\">getEmail<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Safely get the owner&#39;s email<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> owner <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getOwner<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">?<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getOwner<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getEmail<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">:<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;No Owner&#39;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Populate member details in respective columns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">4<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(owner);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">5<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(viewers.<\/span><span style=\"color: #A6E22E\">join<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;, &#39;<\/span><span style=\"color: #F8F8F2\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">6<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(editors.<\/span><span style=\"color: #A6E22E\">join<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;, &#39;<\/span><span style=\"color: #F8F8F2\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">7<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">insertCheckboxes<\/span><span style=\"color: #F8F8F2\">(); <\/span><span style=\"color: #88846F\">\/\/ Add checkboxes for changes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getFolderName<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">file<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> parents <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getParents<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> parents.<\/span><span style=\"color: #A6E22E\">hasNext<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">?<\/span><span style=\"color: #F8F8F2\"> parents.<\/span><span style=\"color: #A6E22E\">next<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getName<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">:<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Root&#39;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">translatePermission<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">access<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">permission<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> accessMap <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Access.ANYONE]: <\/span><span style=\"color: #E6DB74\">&#39;Anyone&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Access.ANYONE_WITH_LINK]: <\/span><span style=\"color: #E6DB74\">&#39;Anyone with the link&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Access.PRIVATE]: <\/span><span style=\"color: #E6DB74\">&#39;Restricted&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  };<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> permissionMap <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Permission.VIEW]: <\/span><span style=\"color: #E6DB74\">&#39;View&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Permission.COMMENT]: <\/span><span style=\"color: #E6DB74\">&#39;Comment&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Permission.EDIT]: <\/span><span style=\"color: #E6DB74\">&#39;Edit&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (access <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> DriveApp.Access.PRIVATE) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> accessMap[access];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">`<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">accessMap[access] <\/span><span style=\"color: #F92672\">||<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Unknown&#39;<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\"> (<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">permissionMap[permission] <\/span><span style=\"color: #F92672\">||<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Unknown&#39;<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">)`<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<div class=\"swell-block-accordion\">\n<details class=\"swell-block-accordion__item\" data-swl-acc=\"wrapper\"><summary class=\"swell-block-accordion__title\" data-swl-acc=\"header\"><span class=\"swell-block-accordion__label\">Script Description<\/span><span class=\"swell-block-accordion__icon c-switchIconBtn\" data-swl-acc=\"icon\" aria-hidden=\"true\" data-opened=\"false\"><i class=\"__icon--closed icon-caret-down\"><\/i><i class=\"__icon--opened icon-caret-up\"><\/i><\/span><\/summary><div class=\"swell-block-accordion__body\" data-swl-acc=\"body\">\n<dl class=\"swell-block-dl\">\n<dt class=\"swell-block-dl__dt\">Main Function:<code>listFilesAndManageAccess()<\/code><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"function listFilesAndManageAccess() {\n  const ui = SpreadsheetApp.getUi();\n  const response = ui.prompt(\n    'Specify a Folder',\n    'Enter &quot;All Files in Drive&quot; or specify a folder name or folder ID:',\n    ui.ButtonSet.OK_CANCEL\n  );\n\n  if (response.getSelectedButton() === ui.Button.CANCEL) {\n    ui.alert('Operation cancelled.');\n    return;\n  }\n\n  const input = response.getResponseText().trim();\n  \n  \/\/ Handle input for &quot;All Files in Drive&quot; or a specific folder\n  if (input === 'All Files in Drive') {\n    listAllFiles();\n  } else {\n    listFilesInFolder(input);\n  }\n}\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">listFilesAndManageAccess<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> ui <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getUi<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> response <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> ui.<\/span><span style=\"color: #A6E22E\">prompt<\/span><span style=\"color: #F8F8F2\">(<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Specify a Folder&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Enter &quot;All Files in Drive&quot; or specify a folder name or folder ID:&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    ui.ButtonSet.OK_CANCEL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  );<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (response.<\/span><span style=\"color: #A6E22E\">getSelectedButton<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> ui.Button.CANCEL) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    ui.<\/span><span style=\"color: #A6E22E\">alert<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Operation cancelled.&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> input <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> response.<\/span><span style=\"color: #A6E22E\">getResponseText<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Handle input for &quot;All Files in Drive&quot; or a specific folder<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (input <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;All Files in Drive&#39;<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #A6E22E\">listAllFiles<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #A6E22E\">listFilesInFolder<\/span><span style=\"color: #F8F8F2\">(input);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When the script is executed, a popup will appear, allowing you to specify either <strong>&#8220;All Files in Drive&#8221;<\/strong> or a specific folder name or folder ID.<\/li>\n\n\n\n<li>Your selection will determine the scope of files to be processed in the next steps.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">List All Files in Drive:<code>listAllFiles()<\/code><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"function listAllFiles() {\n  const sheet = setupSheet();\n  const files = DriveApp.getFiles();\n  let row = 2;\n\n  while (files.hasNext()) {\n    const file = files.next();\n    appendFileDataToSheet(sheet, file, row);\n    row++;\n  }\n}\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">listAllFiles<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheet <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">setupSheet<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> files <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> DriveApp.<\/span><span style=\"color: #A6E22E\">getFiles<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> row <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">while<\/span><span style=\"color: #F8F8F2\"> (files.<\/span><span style=\"color: #A6E22E\">hasNext<\/span><span style=\"color: #F8F8F2\">()) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> file <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> files.<\/span><span style=\"color: #A6E22E\">next<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #A6E22E\">appendFileDataToSheet<\/span><span style=\"color: #F8F8F2\">(sheet, file, row);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    row<\/span><span style=\"color: #F92672\">++<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This function retrieves all files in your Google Drive and lists them in a spreadsheet.<\/li>\n\n\n\n<li>Using <code>DriveApp.getFiles()<\/code>, it fetches all files in the drive and sequentially writes the results to the spreadsheet.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">List Files in a Specific Folder:<code>listFilesInFolder()<\/code><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"function listFilesInFolder(folderNameOrId) {\n  const sheet = setupSheet();\n  let folder;\n  \n  try {\n    folder = DriveApp.getFolderById(folderNameOrId);\n  } catch (e) {\n    const folders = DriveApp.getFoldersByName(folderNameOrId);\n    if (folders.hasNext()) {\n      folder = folders.next();\n    } else {\n      SpreadsheetApp.getUi().alert('Folder not found.');\n      return;\n    }\n  }\n  \n  const files = folder.getFiles();\n  let row = 2;\n\n  while (files.hasNext()) {\n    const file = files.next();\n    appendFileDataToSheet(sheet, file, row);\n    row++;\n  }\n}\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">listFilesInFolder<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">folderNameOrId<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheet <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">setupSheet<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> folder;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">try<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    folder <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> DriveApp.<\/span><span style=\"color: #A6E22E\">getFolderById<\/span><span style=\"color: #F8F8F2\">(folderNameOrId);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  } <\/span><span style=\"color: #F92672\">catch<\/span><span style=\"color: #F8F8F2\"> (e) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> folders <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> DriveApp.<\/span><span style=\"color: #A6E22E\">getFoldersByName<\/span><span style=\"color: #F8F8F2\">(folderNameOrId);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (folders.<\/span><span style=\"color: #A6E22E\">hasNext<\/span><span style=\"color: #F8F8F2\">()) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      folder <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> folders.<\/span><span style=\"color: #A6E22E\">next<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getUi<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">alert<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;Folder not found.&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> files <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> folder.<\/span><span style=\"color: #A6E22E\">getFiles<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> row <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">while<\/span><span style=\"color: #F8F8F2\"> (files.<\/span><span style=\"color: #A6E22E\">hasNext<\/span><span style=\"color: #F8F8F2\">()) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> file <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> files.<\/span><span style=\"color: #A6E22E\">next<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #A6E22E\">appendFileDataToSheet<\/span><span style=\"color: #F8F8F2\">(sheet, file, row);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    row<\/span><span style=\"color: #F92672\">++<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This function retrieves and lists only the files within a specified folder.<\/li>\n\n\n\n<li>Using a folder name or folder ID, it identifies the target folder and writes the files contained within it to the spreadsheet sequentially.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Sheet Initialization:<code>setupSheet()<\/code><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"function setupSheet() {\n  const sheetName = 'Access Management';\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName) || SpreadsheetApp.getActiveSpreadsheet().insertSheet(sheetName);\n  \n  \/\/ Clear and reset the sheet\n  sheet.clear();\n  \n  \/\/ Set headers\n  const headers = [\n    'Folder Name', \n    'File Name', \n    'Current Permissions', \n    'Owner', \n    'Viewers (Including Commenters)', \n    'Editors', \n    'Change Target', \n    'New Permissions', \n    'Remove Viewers', \n    'Remove Editors', \n    'Add Viewers', \n    'Add Editors', \n    'Timestamp'\n  ];\n  \n  sheet.appendRow(headers);\n  const headerRange = sheet.getRange(1, 1, 1, headers.length);\n  headerRange.setHorizontalAlignment('center');\n  headerRange.setVerticalAlignment('middle');\n  \n  \/\/ Color-code headers\n  const greenHeadersRange = sheet.getRange(1, 1, 1, 6);\n  const orangeHeadersRange = sheet.getRange(1, 8, 1, 6);\n  \n  greenHeadersRange.setBackground('#B7E1CD'); \/\/ Light Green\n  orangeHeadersRange.setBackground('#FAD7AC'); \/\/ Light Orange\n  \n  \/\/ Add dropdown options for &quot;New Permissions&quot; column\n  const permissions = [\n    'Anyone with the link (View)', \n    'Anyone with the link (Comment)', \n    'Anyone with the link (Edit)', \n    'Restricted'\n  ];\n  const validation = SpreadsheetApp.newDataValidation().requireValueInList(permissions).build();\n  sheet.getRange(2, 8, sheet.getMaxRows() - 1).setDataValidation(validation);\n  \n  return sheet;\n}\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">setupSheet<\/span><span style=\"color: #F8F8F2\">() {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheetName <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Access Management&#39;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> sheet <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getActiveSpreadsheet<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getSheetByName<\/span><span style=\"color: #F8F8F2\">(sheetName) <\/span><span style=\"color: #F92672\">||<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">getActiveSpreadsheet<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">insertSheet<\/span><span style=\"color: #F8F8F2\">(sheetName);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Clear and reset the sheet<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">clear<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Set headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Folder Name&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;File Name&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Current Permissions&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Owner&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Viewers (Including Commenters)&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Editors&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Change Target&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;New Permissions&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Remove Viewers&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Remove Editors&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Add Viewers&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Add Editors&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Timestamp&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  ];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">appendRow<\/span><span style=\"color: #F8F8F2\">(headers);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> headerRange <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, headers.length);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  headerRange.<\/span><span style=\"color: #A6E22E\">setHorizontalAlignment<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;center&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  headerRange.<\/span><span style=\"color: #A6E22E\">setVerticalAlignment<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;middle&#39;<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Color-code headers<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> greenHeadersRange <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">6<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> orangeHeadersRange <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">8<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">6<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  greenHeadersRange.<\/span><span style=\"color: #A6E22E\">setBackground<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;#B7E1CD&#39;<\/span><span style=\"color: #F8F8F2\">); <\/span><span style=\"color: #88846F\">\/\/ Light Green<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  orangeHeadersRange.<\/span><span style=\"color: #A6E22E\">setBackground<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;#FAD7AC&#39;<\/span><span style=\"color: #F8F8F2\">); <\/span><span style=\"color: #88846F\">\/\/ Light Orange<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Add dropdown options for &quot;New Permissions&quot; column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> permissions <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> [<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Anyone with the link (View)&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Anyone with the link (Comment)&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Anyone with the link (Edit)&#39;<\/span><span style=\"color: #F8F8F2\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #E6DB74\">&#39;Restricted&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  ];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> validation <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> SpreadsheetApp.<\/span><span style=\"color: #A6E22E\">newDataValidation<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">requireValueInList<\/span><span style=\"color: #F8F8F2\">(permissions).<\/span><span style=\"color: #A6E22E\">build<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">8<\/span><span style=\"color: #F8F8F2\">, sheet.<\/span><span style=\"color: #A6E22E\">getMaxRows<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">-<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setDataValidation<\/span><span style=\"color: #F8F8F2\">(validation);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> sheet;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This function creates or initializes a sheet named <strong>&#8220;Access Management&#8221;<\/strong>, setting up columns to store access permission information.<\/li>\n\n\n\n<li>Each column is labeled with appropriate headers, and color coding is applied to enhance readability.<\/li>\n\n\n\n<li>Additionally, the <strong>&#8220;New Permissions&#8221;<\/strong> column is equipped with a dropdown list, preparing for the permission modification operations that will be introduced in the next article.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Writing File Information to the Sheet:<code>appendFileDataToSheet()<\/code><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"function appendFileDataToSheet(sheet, file, row) {\n  const folderName = getFolderName(file);\n  const fileName = file.getName();\n  const fileLink = file.getUrl();\n  const currentPermission = translatePermission(file.getSharingAccess(), file.getSharingPermission());\n\n  \/\/ Append file data with a hyperlink for the file name\n  sheet.getRange(row, 1).setValue(folderName);\n  sheet.getRange(row, 2).setFormula(`=HYPERLINK(&quot;${fileLink}&quot;, &quot;${fileName}&quot;)`);\n  sheet.getRange(row, 3).setValue(currentPermission);\n  \n  \/\/ Retrieve member details\n  const viewers = file.getViewers().map(user =&gt; user.getEmail());\n  const editors = file.getEditors().map(user =&gt; user.getEmail());\n  \n  \/\/ Safely get the owner's email\n  const owner = file.getOwner() ? file.getOwner().getEmail() : 'No Owner';\n\n  \/\/ Populate member details in respective columns\n  sheet.getRange(row, 4).setValue(owner);\n  sheet.getRange(row, 5).setValue(viewers.join(', '));\n  sheet.getRange(row, 6).setValue(editors.join(', '));\n  sheet.getRange(row, 7).insertCheckboxes(); \/\/ Add checkboxes for changes\n}\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">appendFileDataToSheet<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">sheet<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">file<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">row<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> folderName <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getFolderName<\/span><span style=\"color: #F8F8F2\">(file);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> fileName <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getName<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> fileLink <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getUrl<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> currentPermission <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">translatePermission<\/span><span style=\"color: #F8F8F2\">(file.<\/span><span style=\"color: #A6E22E\">getSharingAccess<\/span><span style=\"color: #F8F8F2\">(), file.<\/span><span style=\"color: #A6E22E\">getSharingPermission<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Append file data with a hyperlink for the file name<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(folderName);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">2<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setFormula<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">`=HYPERLINK(&quot;<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">fileLink<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">&quot;, &quot;<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">fileName<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">&quot;)`<\/span><span style=\"color: #F8F8F2\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">3<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(currentPermission);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Retrieve member details<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> viewers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getViewers<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">user<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> user.<\/span><span style=\"color: #A6E22E\">getEmail<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> editors <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getEditors<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">user<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> user.<\/span><span style=\"color: #A6E22E\">getEmail<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Safely get the owner&#39;s email<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> owner <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getOwner<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">?<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getOwner<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getEmail<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">:<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;No Owner&#39;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #88846F\">\/\/ Populate member details in respective columns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">4<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(owner);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">5<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(viewers.<\/span><span style=\"color: #A6E22E\">join<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;, &#39;<\/span><span style=\"color: #F8F8F2\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">6<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(editors.<\/span><span style=\"color: #A6E22E\">join<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;, &#39;<\/span><span style=\"color: #F8F8F2\">));<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">7<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">insertCheckboxes<\/span><span style=\"color: #F8F8F2\">(); <\/span><span style=\"color: #88846F\">\/\/ Add checkboxes for changes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This function processes and writes the retrieved file information into the spreadsheet.<\/li>\n\n\n\n<li>Details such as the <strong>file name<\/strong>, <strong>folder name<\/strong>, <strong>owner<\/strong>, <strong>viewers<\/strong>, and <strong>editors<\/strong> are displayed in their respective columns.<\/li>\n\n\n\n<li>The <strong>file name<\/strong> is output as a hyperlink, allowing you to directly access the file with a single click.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Utility Functions:<code>getFolderName()<\/code>and<code>translatePermission()<\/code><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"function getFolderName(file) {\n  const parents = file.getParents();\n  return parents.hasNext() ? parents.next().getName() : 'Root';\n}\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getFolderName<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">file<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> parents <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> file.<\/span><span style=\"color: #A6E22E\">getParents<\/span><span style=\"color: #F8F8F2\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> parents.<\/span><span style=\"color: #A6E22E\">hasNext<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">?<\/span><span style=\"color: #F8F8F2\"> parents.<\/span><span style=\"color: #A6E22E\">next<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">getName<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">:<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Root&#39;<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"u-mb-ctrl u-mb-40\"><strong><code>getFolderName()<\/code><\/strong>: This function retrieves the name of the folder containing the file.<br>If the file is located in the root folder, it displays <strong>&#8220;Root&#8221;<\/strong> instead.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" data-code=\"function translatePermission(access, permission) {\n  const accessMap = {\n    [DriveApp.Access.ANYONE]: 'Anyone',\n    [DriveApp.Access.ANYONE_WITH_LINK]: 'Anyone with the link',\n    [DriveApp.Access.PRIVATE]: 'Restricted'\n  };\n  const permissionMap = {\n    [DriveApp.Permission.VIEW]: 'View',\n    [DriveApp.Permission.COMMENT]: 'Comment',\n    [DriveApp.Permission.EDIT]: 'Edit'\n  };\n\n  if (access === DriveApp.Access.PRIVATE) {\n    return accessMap[access];\n  } else {\n    return `${accessMap[access] || 'Unknown'} (${permissionMap[permission] || 'Unknown'})`;\n  }\n}\n\" style=\"color:#F8F8F2;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki monokai\" style=\"background-color: #272822\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">translatePermission<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">access<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #FD971F; font-style: italic\">permission<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> accessMap <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Access.ANYONE]: <\/span><span style=\"color: #E6DB74\">&#39;Anyone&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Access.ANYONE_WITH_LINK]: <\/span><span style=\"color: #E6DB74\">&#39;Anyone with the link&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Access.PRIVATE]: <\/span><span style=\"color: #E6DB74\">&#39;Restricted&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  };<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> permissionMap <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Permission.VIEW]: <\/span><span style=\"color: #E6DB74\">&#39;View&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Permission.COMMENT]: <\/span><span style=\"color: #E6DB74\">&#39;Comment&#39;<\/span><span style=\"color: #F8F8F2\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    [DriveApp.Permission.EDIT]: <\/span><span style=\"color: #E6DB74\">&#39;Edit&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  };<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (access <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> DriveApp.Access.PRIVATE) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> accessMap[access];<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">`<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">accessMap[access] <\/span><span style=\"color: #F92672\">||<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Unknown&#39;<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\"> (<\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">permissionMap[permission] <\/span><span style=\"color: #F92672\">||<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Unknown&#39;<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\">)`<\/span><span style=\"color: #F8F8F2\">;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">}<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This function maps Google Drive file access and permission levels to human-readable descriptions, returning a clear string representation of the access type and permission level.<\/li>\n<\/ul>\n<\/dd>\n<\/dl>\n<\/div><\/details>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\"><strong>Save the Script<\/strong><\/div><div class=\"swell-block-step__body\">\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1024x429.png\" alt=\"\" class=\"wp-image-17122\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1024x429.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-300x126.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-768x321.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1536x643.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2.png 1625w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>After writing the script, save it with a name.<\/p>\n\n\n\n<p>(For example: &#8220;Fetch Access Data&#8221;)<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\">Run the Script<\/div><div class=\"swell-block-step__body\">\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"429\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1-1024x429.png\" alt=\"\" class=\"wp-image-17123\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1-1024x429.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1-300x126.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1-768x321.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1-1536x643.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/902fb402f2c61477a4e33a9b7a269fd2-1.png 1625w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">Run the script.<\/p>\n\n\n\n<div class=\"wp-block-group is-style-big_icon_memo u-mb-ctrl u-mb-60\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>If you&#8217;re running the script for the first time, you need to authorize it.<\/p>\n\n\n\n<p><strong>Therefore, press &#8220;<strong>Review Permissions.<\/strong>&#8220;<\/strong><\/p>\n\n\n<div class=\"wp-block-image u-mb-ctrl u-mb-50\">\n<figure class=\"alignleft size-full\"><img decoding=\"async\" width=\"882\" height=\"345\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-79.png\" alt=\"\" class=\"wp-image-15938\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-79.png 882w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-79-300x117.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-79-768x300.png 768w\" sizes=\"(max-width: 882px) 100vw, 882px\" \/><\/figure>\n<\/div>\n\n\n<div class=\"swell-block-accordion\">\n<details class=\"swell-block-accordion__item\" data-swl-acc=\"wrapper\"><summary class=\"swell-block-accordion__title\" data-swl-acc=\"header\"><span class=\"swell-block-accordion__label\">Detailed Authorization Steps<\/span><span class=\"swell-block-accordion__icon c-switchIconBtn\" data-swl-acc=\"icon\" aria-hidden=\"true\" data-opened=\"false\"><i class=\"__icon--closed icon-caret-down\"><\/i><i class=\"__icon--opened icon-caret-up\"><\/i><\/span><\/summary><div class=\"swell-block-accordion__body\" data-swl-acc=\"body\">\n<p><strong>Press &#8220;Advanced.&#8221;<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full u-mb-ctrl u-mb-50\"><img decoding=\"async\" width=\"1272\" height=\"688\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d.jpg\" alt=\"\" class=\"wp-image-15939\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d.jpg 1272w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d-300x162.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d-1024x554.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/188993dfac23ed4b35c326d75de2796d-768x415.jpg 768w\" sizes=\"(max-width: 1272px) 100vw, 1272px\" \/><\/figure>\n\n\n\n\n\n\n\n<p><strong>Press &#8220;Go to Untitled project (Unsafe).&#8221;<\/strong><\/p>\n\n\n<div class=\"wp-block-image u-mb-ctrl u-mb-50\">\n<figure class=\"alignleft size-full\"><img decoding=\"async\" width=\"1305\" height=\"893\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9.jpg\" alt=\"\" class=\"wp-image-15940\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9.jpg 1305w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9-300x205.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9-1024x701.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/b7775751f92380510b389302eaafe1b9-768x526.jpg 768w\" sizes=\"(max-width: 1305px) 100vw, 1305px\" \/><\/figure>\n<\/div>\n\n\n<p><strong>After that, press &#8220;Allow.&#8221;<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full is-resized\"><img decoding=\"async\" width=\"955\" height=\"543\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/7ebb34b4d2c42fa532ad1c35c1ec1049.jpg\" alt=\"\" class=\"wp-image-15941\" style=\"width:566px;height:auto\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/7ebb34b4d2c42fa532ad1c35c1ec1049.jpg 955w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/7ebb34b4d2c42fa532ad1c35c1ec1049-300x171.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/7ebb34b4d2c42fa532ad1c35c1ec1049-768x437.jpg 768w\" sizes=\"(max-width: 955px) 100vw, 955px\" \/><\/figure>\n<\/div>\n\n\n\n<\/div><\/details>\n<\/div>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\">&#8220;All Files in Drive&#8221; or Specify a Folder<\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-full is-resized\"><img decoding=\"async\" width=\"918\" height=\"539\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/fe169605f54a5e016642228aae4dfef1.png\" alt=\"\" class=\"wp-image-17124\" style=\"width:516px;height:auto\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/fe169605f54a5e016642228aae4dfef1.png 918w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/fe169605f54a5e016642228aae4dfef1-300x176.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/fe169605f54a5e016642228aae4dfef1-768x451.png 768w\" sizes=\"(max-width: 918px) 100vw, 918px\" \/><\/figure>\n<\/div>\n\n\n<p>When the script is executed, a popup will appear first.<br>Here, you can enter either <strong>&#8220;All Files in Drive&#8221;<\/strong> or a specific folder name or folder ID.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>All Files in Drive:<\/strong> Targets all files in your Google Drive.<\/li>\n\n\n\n<li><strong>Specific Folder:<\/strong> Targets only the files within the specified folder.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<div class=\"swell-block-step__item\"><div class=\"swell-block-step__number u-bg-main\"><span class=\"__label\">STEP<\/span><\/div><div class=\"swell-block-step__title u-fz-l\"><strong>Display Results in the Spreadsheet<\/strong><\/div><div class=\"swell-block-step__body\">\n<figure class=\"wp-block-image size-full u-mb-ctrl u-mb-30\"><img decoding=\"async\" width=\"2009\" height=\"500\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37.png\" alt=\"\" class=\"wp-image-17126\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37.png 2009w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-300x75.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-1024x255.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-768x191.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37-1536x382.png 1536w\" sizes=\"(max-width: 2009px) 100vw, 2009px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"355\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-1024x355.png\" alt=\"\" class=\"wp-image-17125\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-1024x355.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-300x104.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-768x267.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36-1536x533.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-36.png 1605w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"u-mb-ctrl u-mb-30\">When the script is executed, the access permissions for the specified range of files will be listed in the spreadsheet.<\/p>\n\n\n\n<p>The following details will be displayed:<\/p>\n\n\n\n<figure class=\"wp-block-table is-all-centered u-mb-ctrl u-mb-40\"><table><thead style=\"--thead-color--bg:var(--color_pale03);--thead-color--txt:var(--swl-text_color--black)\"><tr><th colspan=\"2\"><strong>Output Details<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Column A<\/td><td>Folder Name<\/td><\/tr><tr><td>Column B<\/td><td>File Name<\/td><\/tr><tr><td>Column C<\/td><td>Current Permissions<\/td><\/tr><tr><td>Column D<\/td><td>Owner<\/td><\/tr><tr><td>Column E<\/td><td>Viewers (Including Commenters)<\/td><\/tr><tr><td>Column F<\/td><td>Editors<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Columns G\u2013M<\/strong> Display Headers.<\/p>\n\n\n\n<p>Additionally, checkboxes will be added to <strong>Column G (&#8220;Change Target&#8221;)<\/strong>.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<p class=\"u-mb-ctrl u-mb-60\">With this setup, the spreadsheet is now ready for batch permission modifications.<\/p>\n\n\n\n<h2 class=\"wp-block-heading u-mb-ctrl u-mb-40\">Notes<\/h2>\n\n\n\n<dl class=\"swell-block-dl is-style-border u-mb-ctrl u-mb-60\">\n<dt class=\"swell-block-dl__dt\">Script Execution Time<\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<p>Google Apps Script has a <strong>6-minute execution limit<\/strong>. If you have a large number of files in your Drive, it\u2019s recommended to execute the script on a folder-by-folder basis.<\/p>\n\n\n\n<p>(If there are more than 300 files, the script might stop midway.)<\/p>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\"><strong>Exclusion of Ownership Transfer<\/strong><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<p>This script does not include the ability to transfer file ownership.<br>To transfer ownership, you will need to use the <strong>Google Drive API<\/strong> or perform the change manually.<\/p>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Combining &#8220;Viewers&#8221; and &#8220;Viewers (Including Commenters)&#8221; in One Column<\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<p>For restricted permissions, there are two options: <strong>&#8220;Viewers&#8221;<\/strong> and <strong>&#8220;Viewers (Including Commenters)&#8221;<\/strong>.<br>In this spreadsheet, both are displayed in a single column for simplicity.<\/p>\n\n\n\n<p>While individual management is possible using the <strong>Google Drive API<\/strong>, this script simplifies the operation by consolidating these permissions into one column.<\/p>\n<\/dd>\n<\/dl>\n\n\n\n<h2 class=\"wp-block-heading u-mb-ctrl u-mb-40\">Conclusion<\/h2>\n\n\n\n<p>With this Google Apps Script, you can gain a clear understanding of file access permissions, either on a folder-by-folder basis or across your entire Google Drive.<\/p>\n\n\n\n<p>In the next article, we will introduce how to use this retrieved information to batch modify file access permissions in Google Drive.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-30\">This will make it easier to adjust permissions efficiently and effectively.<\/p>\n\n\n<div class=\"swell-block-postLink u-mb-ctrl u-mb-40\">\t\t\t<div class=\"p-blogCard -internal\" data-type=\"type1\" data-onclick=\"clickLink\">\n\t\t\t\t<div class=\"p-blogCard__inner\">\n\t\t\t\t\t<span class=\"p-blogCard__caption\">\u3042\u308f\u305b\u3066\u8aad\u307f\u305f\u3044<\/span>\n\t\t\t\t\t<div class=\"p-blogCard__thumb c-postThumb\"><figure class=\"c-postThumb__figure\"><img decoding=\"async\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/35be3fc9ba0d9059d3d97059dd2f70ee-300x158.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" width=\"320\" height=\"180\"><\/figure><\/div>\t\t\t\t\t<div class=\"p-blogCard__body\">\n\t\t\t\t\t\t<a class=\"p-blogCard__title\" href=\"https:\/\/84office.jp\/https-84office-jp-file-access-rights-change-batch\/\">GAS\u3092\u4f7f\u3063\u3066\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u9650\u3092\u307e\u3068\u3081\u3066\u7ba1\u7406\u30fb\u5909\u66f4\uff08\u5909\u66f4\u7de8\uff09<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">\u524d\u56de\u306e\u8a18\u4e8b\u3067\u3001\u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4e00\u89a7\u5316\u3059\u308b\u65b9\u6cd5\u3092\u3054\u7d39\u4ecb\u3057\u307e\u3057\u305f\u3002 \u4eca\u56de\u306f\u3001\u305d\u306e\u53d6\u5f97\u3057\u305f\u60c5\u5831\u3092\u57fa\u306b\u3057\u3066\u3001\u8907\u6570\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u4e00\u62ec\u3067\u5909&#8230;<\/span>\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\n<div class=\"p-postListWrap u-mb-ctrl u-mb-20\"><ul class=\"p-postList -type-card -pc-col3 -sp-col1\"><li class=\"p-postList__item\">\n\t<a href=\"https:\/\/84office.jp\/en\/get-youtube-data-api\/\" class=\"p-postList__link\">\n\t\t<div class=\"p-postList__thumb c-postThumb\">\n\t<figure class=\"c-postThumb__figure\">\n\t\t<img decoding=\"async\" width=\"1024\" height=\"538\"  src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/2e50637a1d40175ef3385963e05ec2a8-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/2e50637a1d40175ef3385963e05ec2a8-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/2e50637a1d40175ef3385963e05ec2a8-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/2e50637a1d40175ef3385963e05ec2a8-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/2e50637a1d40175ef3385963e05ec2a8.png 1200w\" sizes=\"auto, (min-width: 960px) 400px, 100vw\" loading=\"lazy\" >\t<\/figure>\n\t\t\t<span class=\"c-postThumb__cat icon-folder\" data-cat-id=\"12\">Google Sheets<\/span>\n\t<\/div>\n\t\t\t\t\t<div class=\"p-postList__body\">\n\t\t\t\t<h2 class=\"p-postList__title\">YouTube API Key Setup: Export and Manage Video Data in Google Sheets<\/h2>\t\t\t\t\t\t\t\t<div class=\"p-postList__meta\">\n\t\t\t\t\t<div class=\"p-postList__times c-postTimes u-thin\">\n\t<time class=\"c-postTimes__posted icon-posted\" datetime=\"2024-12-18\" aria-label=\"\u516c\u958b\u65e5\">2024\u5e7412\u670818\u65e5<\/time><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/a>\n<\/li>\n<li class=\"p-postList__item\">\n\t<a href=\"https:\/\/84office.jp\/en\/googlesheet-gantt-chart-creation\/\" class=\"p-postList__link\">\n\t\t<div class=\"p-postList__thumb c-postThumb\">\n\t<figure class=\"c-postThumb__figure\">\n\t\t<img decoding=\"async\" width=\"1024\" height=\"538\"  src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/309301440d5d60cc3af875bcb091475a-1-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/309301440d5d60cc3af875bcb091475a-1-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/309301440d5d60cc3af875bcb091475a-1-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/309301440d5d60cc3af875bcb091475a-1-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/309301440d5d60cc3af875bcb091475a-1.png 1200w\" sizes=\"auto, (min-width: 960px) 400px, 100vw\" loading=\"lazy\" >\t<\/figure>\n\t\t\t<span class=\"c-postThumb__cat icon-folder\" data-cat-id=\"12\">Google Sheets<\/span>\n\t<\/div>\n\t\t\t\t\t<div class=\"p-postList__body\">\n\t\t\t\t<h2 class=\"p-postList__title\">Create Gantt Charts in Google Sheets: Auto-Update with Start and End Dates<\/h2>\t\t\t\t\t\t\t\t<div class=\"p-postList__meta\">\n\t\t\t\t\t<div class=\"p-postList__times c-postTimes u-thin\">\n\t<time class=\"c-postTimes__posted icon-posted\" datetime=\"2025-01-27\" aria-label=\"\u516c\u958b\u65e5\">2025\u5e741\u670827\u65e5<\/time><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/a>\n<\/li>\n<li class=\"p-postList__item\">\n\t<a href=\"https:\/\/84office.jp\/en\/google-sheets-ga4-linked-add-on\/\" class=\"p-postList__link\">\n\t\t<div class=\"p-postList__thumb c-postThumb\">\n\t<figure class=\"c-postThumb__figure\">\n\t\t<img decoding=\"async\" width=\"1024\" height=\"538\"  src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/a98b1120712ae2558c294773114e59b3-1-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/a98b1120712ae2558c294773114e59b3-1-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/a98b1120712ae2558c294773114e59b3-1-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/a98b1120712ae2558c294773114e59b3-1-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/a98b1120712ae2558c294773114e59b3-1.png 1200w\" sizes=\"auto, (min-width: 960px) 400px, 100vw\" loading=\"lazy\" >\t<\/figure>\n\t\t\t<span class=\"c-postThumb__cat icon-folder\" data-cat-id=\"12\">Google Sheets<\/span>\n\t<\/div>\n\t\t\t\t\t<div class=\"p-postList__body\">\n\t\t\t\t<h2 class=\"p-postList__title\">How to Connect GA4 Data to Google Sheets: A Step-by-Step Guide Using the Official Google Analytics Add-On<\/h2>\t\t\t\t\t\t\t\t<div class=\"p-postList__meta\">\n\t\t\t\t\t<div class=\"p-postList__times c-postTimes u-thin\">\n\t<time class=\"c-postTimes__posted icon-posted\" datetime=\"2025-01-16\" aria-label=\"\u516c\u958b\u65e5\">2025\u5e741\u670816\u65e5<\/time><\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t<\/a>\n<\/li>\n<\/ul><\/div>\n\n\n<p class=\"is-style-emboss_box has-swl-pale-02-background-color has-background\">Our company offers support for improving work efficiency through the use of Google Apps Script. <br>If you need assistance with Google Apps Script customization or error resolution, please feel free to contact us. <br>We are fully committed to supporting your business improvements.<br><br><a href=\"https:\/\/84office.jp\/contact\/\">Contact us here<br><\/a><\/p>\n\n\n\n<script src=\"https:\/\/codoc.jp\/js\/cms.js\" data-css=\"rainbow\" data-usercode=\"pQLZofrBiA\" charset=\"UTF-8\" defer><\/script>\n <div id=\"codoc-entry-9lNr9PuMXQ\" class=\"codoc-entries\" data-without-body=\"1\" data-support-button-text=\"Support with a Tip\" data-support-message=\"We will keep offering tools and information to boost work efficiency. Your support helps us provide even better content.\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Have you ever struggled with the tedious task of reviewing and modifying sharing settings for individual files [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":17145,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"swell_btn_cv_data":"","_locale":"en_US","_original_post":"https:\/\/84office.jp\/?p=15720","footnotes":""},"categories":[12],"tags":[],"class_list":["post-17121","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-12","en-US"],"_links":{"self":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/17121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/comments?post=17121"}],"version-history":[{"count":2,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/17121\/revisions"}],"predecessor-version":[{"id":17133,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/17121\/revisions\/17133"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/media\/17145"}],"wp:attachment":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/media?parent=17121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/categories?post=17121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/tags?post=17121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}