{"id":17131,"date":"2025-01-13T16:53:59","date_gmt":"2025-01-13T07:53:59","guid":{"rendered":"https:\/\/84office.jp\/?p=17131"},"modified":"2025-01-13T16:54:00","modified_gmt":"2025-01-13T07:54:00","slug":"https-84office-jp-file-access-rights-change-batch","status":"publish","type":"post","link":"https:\/\/84office.jp\/en\/https-84office-jp-file-access-rights-change-batch\/","title":{"rendered":"Manage and Modify Spreadsheet Permissions in Bulk with Google Apps Script: The Update Guide"},"content":{"rendered":"<div class=\"codoc-evacuations\" style=\"display:none;\" data-shortcode=\"\"><\/div>\n<p>In the <a href=\"https:\/\/84office.jp\/en\/file-access-rights-change-setup\/\" target=\"_blank\" rel=\"noreferrer noopener\">previous article<\/a>, we introduced how to list the access permissions of spreadsheet files.<\/p>\n\n\n\n<p>This time, we\u2019ll explain how to use the retrieved information to modify access permissions for multiple files in bulk.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">When managing multiple files in a business setting, manually updating the permissions for each file can be time-consuming. However, with this method, you can make changes to permissions all at once, saving both time and effort.<\/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\/2025\/01\/e9a4a320bee4a411fd943416aa77e65a-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\/en\/file-access-rights-change-setup\/\">Effortlessly Manage and Modify Spreadsheet Permissions Using Google Apps Script: Preparation Guide<\/a>\n\t\t\t\t\t\t<span class=\"p-blogCard__excerpt\">Have you ever struggled with the tedious task of reviewing and modifying sharing settings for individual files, such as spreadsheets or documents? This proce&#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><strong>Listing Access Permissions (Previous Article)<\/strong><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"2009\" height=\"500\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-37.png\" alt=\"\" class=\"wp-image-17126\" style=\"width:852px;height:auto\" 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<p><strong><strong>Bulk Modification of Access Permissions (This Article)<\/strong><\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"383\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-39-1024x383.png\" alt=\"\" class=\"wp-image-17137\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-39-1024x383.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-39-300x112.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-39-768x287.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-39-1536x574.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-39.png 1624w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-border -border02 u-mb-ctrl u-mb-40 has-swl-pale-03-background-color has-background\">Using the input data in the spreadsheet, this guide demonstrates how to use Google Apps Script to update the access permissions for each file.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-60\">You can select the files that require changes and configure settings to grant or remove viewing or editing permissions for specific users.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Steps<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Preparing the Spreadsheet<\/strong><\/h3>\n\n\n\n<div class=\"swell-block-step u-mb-ctrl u-mb-50\" 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\"><strong>Open the Spreadsheet<\/strong><\/div><div class=\"swell-block-step__body\"><div class=\"wp-block-image u-mb-ctrl u-mb-40\">\n<figure class=\"alignleft size-full\"><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<\/div>\n\n\n<p class=\"u-mb-ctrl u-mb-30\">Prepare a sheet that lists the access permissions for each file.<\/p>\n\n\n\n<p>For details on how to list access permissions, please refer to [<a href=\"https:\/\/84office.jp\/en\/file-access-rights-change-setup\/\">this article<\/a>].<\/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>Mark Files for Modification<\/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=\"346\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/7536a2dd40528eff747228d0e7f7ea5d-1024x346.png\" alt=\"\" class=\"wp-image-17132\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/7536a2dd40528eff747228d0e7f7ea5d-1024x346.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/7536a2dd40528eff747228d0e7f7ea5d-300x101.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/7536a2dd40528eff747228d0e7f7ea5d-768x259.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/7536a2dd40528eff747228d0e7f7ea5d-1536x519.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/7536a2dd40528eff747228d0e7f7ea5d.png 1759w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>By checking the boxes in the <strong>&#8220;Change Target&#8221;<\/strong> column, you can specify which files will be targeted for access permission updates.<\/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>Select New Permissions<\/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=\"358\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-42-1024x358.png\" alt=\"\" class=\"wp-image-17140\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-42-1024x358.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-42-300x105.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-42-768x268.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-42-1536x536.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-42.png 1738w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Choose the desired type of access permission from the dropdown list.<\/p>\n\n\n\n<p>The dropdown list is generated during the previous execution of the Google Apps Script.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Restricted<\/strong><\/li>\n\n\n\n<li><strong>Anyone with the link (View)<\/strong><\/li>\n\n\n\n<li><strong>Anyone with the link (Comment)<\/strong><\/li>\n\n\n\n<li><strong>Anyone with the link (Edit)<\/strong><\/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>Remove or Add Viewers and Editors<\/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=\"354\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/3a022f6f9012a215677a7197c83fcc6c-1024x354.png\" alt=\"\" class=\"wp-image-17141\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/3a022f6f9012a215677a7197c83fcc6c-1024x354.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/3a022f6f9012a215677a7197c83fcc6c-300x104.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/3a022f6f9012a215677a7197c83fcc6c-768x266.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/3a022f6f9012a215677a7197c83fcc6c-1536x531.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/3a022f6f9012a215677a7197c83fcc6c.png 1738w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Enter email addresses in the corresponding columns:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Remove Viewers<\/strong><\/li>\n\n\n\n<li><strong>Remove Editors<\/strong><\/li>\n\n\n\n<li><strong>Add Viewers<\/strong><\/li>\n\n\n\n<li class=\"u-mb-ctrl u-mb-30\"><strong>Add Editors<\/strong><\/li>\n<\/ul>\n\n\n\n<p>If there are multiple email addresses, enter them separated by commas.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">(Example: <strong><a>user1@example.com<\/a>, <a>user2@example.com<\/a><\/strong>)<\/p>\n\n\n\n<p class=\"is-style-big_icon_memo u-mb-ctrl u-mb-40\">To modify the permissions of email addresses already registered as restricted viewers or editors, you must first remove the existing permission and then re-add the address with the desired permission.<br><br><img decoding=\"async\" width=\"700\" height=\"301\" class=\"wp-image-17142\" style=\"width: 700px;\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-43.png\" alt=\"\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-43.png 1396w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-43-300x129.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-43-1024x440.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/image-43-768x330.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><br><br><br>For example, to change <strong><a>user1@example.com<\/a><\/strong> from viewer permission to editor permission:<br><br>Enter <strong><a>user1@example.com<\/a><\/strong> in the <strong>&#8220;Remove Viewers&#8221;<\/strong> column.<br>Enter the same email address in the <strong>&#8220;Add Editors&#8221;<\/strong> column.<br><br>By following this process, the user&#8217;s permissions will be updated correctly.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Run the Script<\/h3>\n\n\n\n<div class=\"swell-block-step u-mb-ctrl u-mb-60\" 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 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 updateAccessPermissions() {\n  const sheetName = 'Access Management';\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);\n  const lastRow = sheet.getLastRow();\n  \n  for (let row = 2; row &lt;= lastRow; row++) {\n    const checkCell = sheet.getRange(row, 7); \/\/ Checkbox to select target\n    const newPermission = sheet.getRange(row, 8).getValue(); \/\/ New permissions to apply\n    const fileUrl = sheet.getRange(row, 2).getFormula().match(\/&quot;(.*?)&quot;\/)[1]; \/\/ Extract file URL from hyperlink\n\n    if (checkCell.isChecked() &amp;&amp; newPermission) {\n      const fileId = getFileIdFromUrl(fileUrl);\n      const file = DriveApp.getFileById(fileId);\n\n      \/\/ Update access permissions based on the selected option\n      if (newPermission === 'Anyone with the link (View)') {\n        file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);\n      } else if (newPermission === 'Anyone with the link (Comment)') {\n        file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.COMMENT);\n      } else if (newPermission === 'Anyone with the link (Edit)') {\n        file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);\n      } else if (newPermission === 'Restricted') {\n        file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE); \/\/ Set to restricted\n      }\n\n      \/\/ Remove viewers and editors based on email addresses in specific columns\n      let existingViewers = sheet.getRange(row, 5).getValue().split(',').map(email =&gt; email.trim()).filter(email =&gt; email);\n      let existingEditors = sheet.getRange(row, 6).getValue().split(',').map(email =&gt; email.trim()).filter(email =&gt; email);\n\n      const removeViewers = sheet.getRange(row, 9).getValue().split(',').map(email =&gt; email.trim());\n      removeViewers.forEach(email =&gt; {\n        if (email) {\n          try {\n            file.removeViewer(email); \/\/ Remove as viewer\n            existingViewers = existingViewers.filter(e =&gt; e !== email); \/\/ Update viewer list\n          } catch (e) {\n            Logger.log(`Failed to remove ${email} as viewer: ${e.message}`);\n          }\n        }\n      });\n\n      const removeEditors = sheet.getRange(row, 10).getValue().split(',').map(email =&gt; email.trim());\n      removeEditors.forEach(email =&gt; {\n        if (email) {\n          try {\n            file.removeEditor(email); \/\/ Remove as editor\n            existingEditors = existingEditors.filter(e =&gt; e !== email); \/\/ Update editor list\n          } catch (e) {\n            Logger.log(`Failed to remove ${email} as editor: ${e.message}`);\n          }\n        }\n      });\n\n      \/\/ Add viewers and editors based on input in specific columns\n      const addViewers = sheet.getRange(row, 11).getValue().split(',').map(email =&gt; email.trim());\n      addViewers.forEach(email =&gt; {\n        if (email &amp;&amp; !existingViewers.includes(email)) {\n          file.addViewer(email); \/\/ Add as viewer\n          existingViewers.push(email); \/\/ Update viewer list\n        }\n      });\n\n      const addEditors = sheet.getRange(row, 12).getValue().split(',').map(email =&gt; email.trim());\n      addEditors.forEach(email =&gt; {\n        if (email &amp;&amp; !existingEditors.includes(email)) {\n          file.addEditor(email); \/\/ Add as editor\n          existingEditors.push(email); \/\/ Update editor list\n        }\n      });\n\n      \/\/ Update the sheet with the latest viewer and editor lists\n      sheet.getRange(row, 5).setValue(existingViewers.filter(email =&gt; email).join(', '));\n      sheet.getRange(row, 6).setValue(existingEditors.filter(email =&gt; email).join(', '));\n\n      \/\/ Update the &quot;Current Permissions&quot; column\n      const updatedPermission = translatePermission(file.getSharingAccess(), file.getSharingPermission());\n      sheet.getRange(row, 3).setValue(updatedPermission);\n\n      \/\/ Add a timestamp in the last column\n      sheet.getRange(row, 13).setValue(new Date());\n      \n      \/\/ Clear data in columns H\u2013L\n      sheet.getRange(row, 8, 1, 5).setValue('');\n      \n      \/\/ Uncheck the checkbox\n      checkCell.setValue(false);\n    }\n  }\n}\n\n\/\/ Helper function to extract the file ID from a file URL\nfunction getFileIdFromUrl(fileUrl) {\n  const regex = \/[-\\w]{25,}\/;\n  const match = fileUrl.match(regex);\n  return match ? match[0] : null;\n}\n\n\/\/ Helper function to translate access and permission levels to readable format\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  \/\/ For restricted access, display only &quot;Restricted&quot;\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\">updateAccessPermissions<\/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>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> lastRow <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getLastRow<\/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: #F92672\">for<\/span><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\">; row <\/span><span style=\"color: #F92672\">&lt;=<\/span><span style=\"color: #F8F8F2\"> lastRow; row<\/span><span style=\"color: #F92672\">++<\/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\"> checkCell <\/span><span style=\"color: #F92672\">=<\/span><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: #88846F\">\/\/ Checkbox to select target<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> newPermission <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">8<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">(); <\/span><span style=\"color: #88846F\">\/\/ New permissions to apply<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> fileUrl <\/span><span style=\"color: #F92672\">=<\/span><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\">getFormula<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">match<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">\/&quot;(<\/span><span style=\"color: #AE81FF\">.<\/span><span style=\"color: #F92672\">*?<\/span><span style=\"color: #E6DB74\">)&quot;\/<\/span><span style=\"color: #F8F8F2\">)[<\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">]; <\/span><span style=\"color: #88846F\">\/\/ Extract file URL from hyperlink<\/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\"> (checkCell.<\/span><span style=\"color: #A6E22E\">isChecked<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> newPermission) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> fileId <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getFileIdFromUrl<\/span><span style=\"color: #F8F8F2\">(fileUrl);<\/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\"> DriveApp.<\/span><span style=\"color: #A6E22E\">getFileById<\/span><span style=\"color: #F8F8F2\">(fileId);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Update access permissions based on the selected option<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (newPermission <\/span><span style=\"color: #F92672\">===<\/span><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\">        file.<\/span><span style=\"color: #A6E22E\">setSharing<\/span><span style=\"color: #F8F8F2\">(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (newPermission <\/span><span style=\"color: #F92672\">===<\/span><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\">        file.<\/span><span style=\"color: #A6E22E\">setSharing<\/span><span style=\"color: #F8F8F2\">(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.COMMENT);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (newPermission <\/span><span style=\"color: #F92672\">===<\/span><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\">        file.<\/span><span style=\"color: #A6E22E\">setSharing<\/span><span style=\"color: #F8F8F2\">(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (newPermission <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Restricted&#39;<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        file.<\/span><span style=\"color: #A6E22E\">setSharing<\/span><span style=\"color: #F8F8F2\">(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE); <\/span><span style=\"color: #88846F\">\/\/ Set to restricted<\/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: #88846F\">\/\/ Remove viewers and editors based on email addresses in specific columns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> existingViewers <\/span><span style=\"color: #F92672\">=<\/span><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\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">()).<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> existingEditors <\/span><span style=\"color: #F92672\">=<\/span><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\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">()).<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email);<\/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\"> removeViewers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">9<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      removeViewers.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (email) {<\/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\">            file.<\/span><span style=\"color: #A6E22E\">removeViewer<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Remove as viewer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">            existingViewers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> existingViewers.<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">e<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> e <\/span><span style=\"color: #F92672\">!==<\/span><span style=\"color: #F8F8F2\"> email); <\/span><span style=\"color: #88846F\">\/\/ Update viewer list<\/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\">            Logger.<\/span><span style=\"color: #A6E22E\">log<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">`Failed to remove <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">email<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\"> as viewer: <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">e.message<\/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 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\"> removeEditors <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">10<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      removeEditors.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (email) {<\/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\">            file.<\/span><span style=\"color: #A6E22E\">removeEditor<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Remove as editor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">            existingEditors <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> existingEditors.<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">e<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> e <\/span><span style=\"color: #F92672\">!==<\/span><span style=\"color: #F8F8F2\"> email); <\/span><span style=\"color: #88846F\">\/\/ Update editor list<\/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\">            Logger.<\/span><span style=\"color: #A6E22E\">log<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">`Failed to remove <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">email<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\"> as editor: <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">e.message<\/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 style=\"color: #F8F8F2\">      });<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Add viewers and editors based on input in specific columns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> addViewers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">11<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      addViewers.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (email <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">existingViewers.<\/span><span style=\"color: #A6E22E\">includes<\/span><span style=\"color: #F8F8F2\">(email)) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">          file.<\/span><span style=\"color: #A6E22E\">addViewer<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Add as viewer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">          existingViewers.<\/span><span style=\"color: #A6E22E\">push<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Update viewer list<\/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: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> addEditors <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">12<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      addEditors.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (email <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">existingEditors.<\/span><span style=\"color: #A6E22E\">includes<\/span><span style=\"color: #F8F8F2\">(email)) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">          file.<\/span><span style=\"color: #A6E22E\">addEditor<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Add as editor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">          existingEditors.<\/span><span style=\"color: #A6E22E\">push<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Update editor list<\/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: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Update the sheet with the latest viewer and editor lists<\/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\">(existingViewers.<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email).<\/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\">(existingEditors.<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email).<\/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>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Update the &quot;Current 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\"> updatedPermission <\/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 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\">(updatedPermission);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Add a timestamp in the last column<\/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\">13<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #F92672\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">Date<\/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\">\/\/ Clear data in columns H\u2013L<\/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\">8<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">5<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/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\">      <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Uncheck the checkbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      checkCell.<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">false<\/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>\n<span class=\"line\"><span style=\"color: #88846F\">\/\/ Helper function to extract the file ID from a file URL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getFileIdFromUrl<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">fileUrl<\/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\"> regex <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #E6DB74\"> \/<\/span><span style=\"color: #AE81FF\">[-\\w]<\/span><span style=\"color: #F92672\">{25,}<\/span><span style=\"color: #E6DB74\">\/<\/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\"> match <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> fileUrl.<\/span><span style=\"color: #A6E22E\">match<\/span><span style=\"color: #F8F8F2\">(regex);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> match <\/span><span style=\"color: #F92672\">?<\/span><span style=\"color: #F8F8F2\"> match[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">] <\/span><span style=\"color: #F92672\">:<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">null<\/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: #88846F\">\/\/ Helper function to translate access and permission levels to readable format<\/span><\/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: #88846F\">\/\/ For restricted access, display only &quot;Restricted&quot;<\/span><\/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>updateAccessPermissions()<\/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 updateAccessPermissions() {\n  const sheetName = 'Access Management';\n  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);\n  const lastRow = sheet.getLastRow();\n  \n  for (let row = 2; row &lt;= lastRow; row++) {\n    const checkCell = sheet.getRange(row, 7); \/\/ Checkbox to select target\n    const newPermission = sheet.getRange(row, 8).getValue(); \/\/ New permissions to apply\n    const fileUrl = sheet.getRange(row, 2).getFormula().match(\/&quot;(.*?)&quot;\/)[1]; \/\/ Extract file URL from hyperlink\n\n    if (checkCell.isChecked() &amp;&amp; newPermission) {\n      const fileId = getFileIdFromUrl(fileUrl);\n      const file = DriveApp.getFileById(fileId);\n\n      \/\/ Update access permissions based on the selected option\n      if (newPermission === 'Anyone with the link (View)') {\n        file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);\n      } else if (newPermission === 'Anyone with the link (Comment)') {\n        file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.COMMENT);\n      } else if (newPermission === 'Anyone with the link (Edit)') {\n        file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);\n      } else if (newPermission === 'Restricted') {\n        file.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE); \/\/ Set to restricted\n      }\n\n      \/\/ Remove viewers and editors based on email addresses in specific columns\n      let existingViewers = sheet.getRange(row, 5).getValue().split(',').map(email =&gt; email.trim()).filter(email =&gt; email);\n      let existingEditors = sheet.getRange(row, 6).getValue().split(',').map(email =&gt; email.trim()).filter(email =&gt; email);\n\n      const removeViewers = sheet.getRange(row, 9).getValue().split(',').map(email =&gt; email.trim());\n      removeViewers.forEach(email =&gt; {\n        if (email) {\n          try {\n            file.removeViewer(email); \/\/ Remove as viewer\n            existingViewers = existingViewers.filter(e =&gt; e !== email); \/\/ Update viewer list\n          } catch (e) {\n            Logger.log(`Failed to remove ${email} as viewer: ${e.message}`);\n          }\n        }\n      });\n\n      const removeEditors = sheet.getRange(row, 10).getValue().split(',').map(email =&gt; email.trim());\n      removeEditors.forEach(email =&gt; {\n        if (email) {\n          try {\n            file.removeEditor(email); \/\/ Remove as editor\n            existingEditors = existingEditors.filter(e =&gt; e !== email); \/\/ Update editor list\n          } catch (e) {\n            Logger.log(`Failed to remove ${email} as editor: ${e.message}`);\n          }\n        }\n      });\n\n      \/\/ Add viewers and editors based on input in specific columns\n      const addViewers = sheet.getRange(row, 11).getValue().split(',').map(email =&gt; email.trim());\n      addViewers.forEach(email =&gt; {\n        if (email &amp;&amp; !existingViewers.includes(email)) {\n          file.addViewer(email); \/\/ Add as viewer\n          existingViewers.push(email); \/\/ Update viewer list\n        }\n      });\n\n      const addEditors = sheet.getRange(row, 12).getValue().split(',').map(email =&gt; email.trim());\n      addEditors.forEach(email =&gt; {\n        if (email &amp;&amp; !existingEditors.includes(email)) {\n          file.addEditor(email); \/\/ Add as editor\n          existingEditors.push(email); \/\/ Update editor list\n        }\n      });\n\n      \/\/ Update the sheet with the latest viewer and editor lists\n      sheet.getRange(row, 5).setValue(existingViewers.filter(email =&gt; email).join(', '));\n      sheet.getRange(row, 6).setValue(existingEditors.filter(email =&gt; email).join(', '));\n\n      \/\/ Update the &quot;Current Permissions&quot; column\n      const updatedPermission = translatePermission(file.getSharingAccess(), file.getSharingPermission());\n      sheet.getRange(row, 3).setValue(updatedPermission);\n\n      \/\/ Add a timestamp in the last column\n      sheet.getRange(row, 13).setValue(new Date());\n      \n      \/\/ Clear data in columns H\u2013L\n      sheet.getRange(row, 8, 1, 5).setValue('');\n      \n      \/\/ Uncheck the checkbox\n      checkCell.setValue(false);\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\">updateAccessPermissions<\/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>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> lastRow <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getLastRow<\/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: #F92672\">for<\/span><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\">; row <\/span><span style=\"color: #F92672\">&lt;=<\/span><span style=\"color: #F8F8F2\"> lastRow; row<\/span><span style=\"color: #F92672\">++<\/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\"> checkCell <\/span><span style=\"color: #F92672\">=<\/span><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: #88846F\">\/\/ Checkbox to select target<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> newPermission <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">8<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">(); <\/span><span style=\"color: #88846F\">\/\/ New permissions to apply<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">    <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> fileUrl <\/span><span style=\"color: #F92672\">=<\/span><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\">getFormula<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">match<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">\/&quot;(<\/span><span style=\"color: #AE81FF\">.<\/span><span style=\"color: #F92672\">*?<\/span><span style=\"color: #E6DB74\">)&quot;\/<\/span><span style=\"color: #F8F8F2\">)[<\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">]; <\/span><span style=\"color: #88846F\">\/\/ Extract file URL from hyperlink<\/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\"> (checkCell.<\/span><span style=\"color: #A6E22E\">isChecked<\/span><span style=\"color: #F8F8F2\">() <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> newPermission) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> fileId <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getFileIdFromUrl<\/span><span style=\"color: #F8F8F2\">(fileUrl);<\/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\"> DriveApp.<\/span><span style=\"color: #A6E22E\">getFileById<\/span><span style=\"color: #F8F8F2\">(fileId);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Update access permissions based on the selected option<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (newPermission <\/span><span style=\"color: #F92672\">===<\/span><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\">        file.<\/span><span style=\"color: #A6E22E\">setSharing<\/span><span style=\"color: #F8F8F2\">(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (newPermission <\/span><span style=\"color: #F92672\">===<\/span><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\">        file.<\/span><span style=\"color: #A6E22E\">setSharing<\/span><span style=\"color: #F8F8F2\">(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.COMMENT);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (newPermission <\/span><span style=\"color: #F92672\">===<\/span><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\">        file.<\/span><span style=\"color: #A6E22E\">setSharing<\/span><span style=\"color: #F8F8F2\">(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      } <\/span><span style=\"color: #F92672\">else<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (newPermission <\/span><span style=\"color: #F92672\">===<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #E6DB74\">&#39;Restricted&#39;<\/span><span style=\"color: #F8F8F2\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        file.<\/span><span style=\"color: #A6E22E\">setSharing<\/span><span style=\"color: #F8F8F2\">(DriveApp.Access.PRIVATE, DriveApp.Permission.NONE); <\/span><span style=\"color: #88846F\">\/\/ Set to restricted<\/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: #88846F\">\/\/ Remove viewers and editors based on email addresses in specific columns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> existingViewers <\/span><span style=\"color: #F92672\">=<\/span><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\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">()).<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">let<\/span><span style=\"color: #F8F8F2\"> existingEditors <\/span><span style=\"color: #F92672\">=<\/span><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\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">()).<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email);<\/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\"> removeViewers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">9<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      removeViewers.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (email) {<\/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\">            file.<\/span><span style=\"color: #A6E22E\">removeViewer<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Remove as viewer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">            existingViewers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> existingViewers.<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">e<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> e <\/span><span style=\"color: #F92672\">!==<\/span><span style=\"color: #F8F8F2\"> email); <\/span><span style=\"color: #88846F\">\/\/ Update viewer list<\/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\">            Logger.<\/span><span style=\"color: #A6E22E\">log<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">`Failed to remove <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">email<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\"> as viewer: <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">e.message<\/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 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\"> removeEditors <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">10<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      removeEditors.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (email) {<\/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\">            file.<\/span><span style=\"color: #A6E22E\">removeEditor<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Remove as editor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">            existingEditors <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> existingEditors.<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">e<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> e <\/span><span style=\"color: #F92672\">!==<\/span><span style=\"color: #F8F8F2\"> email); <\/span><span style=\"color: #88846F\">\/\/ Update editor list<\/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\">            Logger.<\/span><span style=\"color: #A6E22E\">log<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">`Failed to remove <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">email<\/span><span style=\"color: #F92672\">}<\/span><span style=\"color: #E6DB74\"> as editor: <\/span><span style=\"color: #F92672\">${<\/span><span style=\"color: #F8F8F2\">e.message<\/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 style=\"color: #F8F8F2\">      });<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Add viewers and editors based on input in specific columns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> addViewers <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">11<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      addViewers.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (email <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">existingViewers.<\/span><span style=\"color: #A6E22E\">includes<\/span><span style=\"color: #F8F8F2\">(email)) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">          file.<\/span><span style=\"color: #A6E22E\">addViewer<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Add as viewer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">          existingViewers.<\/span><span style=\"color: #A6E22E\">push<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Update viewer list<\/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: #F8F8F2\">      <\/span><span style=\"color: #66D9EF; font-style: italic\">const<\/span><span style=\"color: #F8F8F2\"> addEditors <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> sheet.<\/span><span style=\"color: #A6E22E\">getRange<\/span><span style=\"color: #F8F8F2\">(row, <\/span><span style=\"color: #AE81FF\">12<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">getValue<\/span><span style=\"color: #F8F8F2\">().<\/span><span style=\"color: #A6E22E\">split<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #E6DB74\">&#39;,&#39;<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">map<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email.<\/span><span style=\"color: #A6E22E\">trim<\/span><span style=\"color: #F8F8F2\">());<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      addEditors.<\/span><span style=\"color: #A6E22E\">forEach<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">        <\/span><span style=\"color: #F92672\">if<\/span><span style=\"color: #F8F8F2\"> (email <\/span><span style=\"color: #F92672\">&amp;&amp;<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #F92672\">!<\/span><span style=\"color: #F8F8F2\">existingEditors.<\/span><span style=\"color: #A6E22E\">includes<\/span><span style=\"color: #F8F8F2\">(email)) {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">          file.<\/span><span style=\"color: #A6E22E\">addEditor<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Add as editor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">          existingEditors.<\/span><span style=\"color: #A6E22E\">push<\/span><span style=\"color: #F8F8F2\">(email); <\/span><span style=\"color: #88846F\">\/\/ Update editor list<\/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: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Update the sheet with the latest viewer and editor lists<\/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\">(existingViewers.<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email).<\/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\">(existingEditors.<\/span><span style=\"color: #A6E22E\">filter<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">email<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #66D9EF; font-style: italic\">=&gt;<\/span><span style=\"color: #F8F8F2\"> email).<\/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>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Update the &quot;Current 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\"> updatedPermission <\/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 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\">(updatedPermission);<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Add a timestamp in the last column<\/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\">13<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #F92672\">new<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">Date<\/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\">\/\/ Clear data in columns H\u2013L<\/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\">8<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">1<\/span><span style=\"color: #F8F8F2\">, <\/span><span style=\"color: #AE81FF\">5<\/span><span style=\"color: #F8F8F2\">).<\/span><span style=\"color: #A6E22E\">setValue<\/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\">      <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      <\/span><span style=\"color: #88846F\">\/\/ Uncheck the checkbox<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">      checkCell.<\/span><span style=\"color: #A6E22E\">setValue<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #AE81FF\">false<\/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><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This function updates file access permissions based on the state of the checkboxes in the list.<\/li>\n\n\n\n<li>Columns <strong>H\u2013L<\/strong> are reset after the process is complete, preparing the spreadsheet for the next set of inputs.<\/li>\n<\/ul>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\">Utility Functions:<code>getFileIdFromUrl()<\/code>and<code>translatePermission()<\/code>\u3000<\/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=\"\/\/ Helper function to extract the file ID from a file URL\nfunction getFileIdFromUrl(fileUrl) {\n  const regex = \/[-\\w]{25,}\/;\n  const match = fileUrl.match(regex);\n  return match ? match[0] : null;\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: #88846F\">\/\/ Helper function to extract the file ID from a file URL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #66D9EF; font-style: italic\">function<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #A6E22E\">getFileIdFromUrl<\/span><span style=\"color: #F8F8F2\">(<\/span><span style=\"color: #FD971F; font-style: italic\">fileUrl<\/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\"> regex <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #E6DB74\"> \/<\/span><span style=\"color: #AE81FF\">[-\\w]<\/span><span style=\"color: #F92672\">{25,}<\/span><span style=\"color: #E6DB74\">\/<\/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\"> match <\/span><span style=\"color: #F92672\">=<\/span><span style=\"color: #F8F8F2\"> fileUrl.<\/span><span style=\"color: #A6E22E\">match<\/span><span style=\"color: #F8F8F2\">(regex);<\/span><\/span>\n<span class=\"line\"><span style=\"color: #F8F8F2\">  <\/span><span style=\"color: #F92672\">return<\/span><span style=\"color: #F8F8F2\"> match <\/span><span style=\"color: #F92672\">?<\/span><span style=\"color: #F8F8F2\"> match[<\/span><span style=\"color: #AE81FF\">0<\/span><span style=\"color: #F8F8F2\">] <\/span><span style=\"color: #F92672\">:<\/span><span style=\"color: #F8F8F2\"> <\/span><span style=\"color: #AE81FF\">null<\/span><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 u-mb-ctrl u-mb-40\">\n<li>Extracts the file ID from a Google Drive file URL.<\/li>\n\n\n\n<li>It uses a regular expression to identify the file ID within the URL.<\/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=\"\/\/ Helper function to translate access and permission levels to readable format\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  \/\/ For restricted access, display only &quot;Restricted&quot;\n  if (access === DriveApp.Access.PRIVATE) {\n    return accessMap[access];\n  } else {\n    return `${accessMap[access] || 'Unknown'} (${permissionMap[permission] || 'Unknown'})`;\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: #88846F\">\/\/ Helper function to translate access and permission levels to readable format<\/span><\/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: #88846F\">\/\/ For restricted access, display only &quot;Restricted&quot;<\/span><\/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><\/code><\/pre><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>This function translates Google Drive access and permission levels into a human-readable format.<\/li>\n<\/ul>\n\n\n\n<p>For example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Access Levels:<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>Anyone<\/code><\/li>\n\n\n\n<li><code>Anyone with the link<\/code><\/li>\n\n\n\n<li><code>Restricted<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Permission Levels:<\/strong>\n<ul class=\"wp-block-list\">\n<li><code>View<\/code><\/li>\n\n\n\n<li><code>Comment<\/code><\/li>\n\n\n\n<li><code>Edit<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>It combines these levels to provide clear descriptions, such as &#8220;Anyone with the link (View)&#8221; or &#8220;Restricted.&#8221; If the access or permission is undefined, it returns &#8220;Unknown.&#8221;<\/p>\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=\"465\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1024x465.png\" alt=\"\" class=\"wp-image-17134\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1024x465.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-300x136.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-768x349.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1536x698.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd.png 1593w\" 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>(Example: <strong>&#8220;Bulk Access Permission Update&#8221;<\/strong>)<\/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=\"465\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1-1024x465.png\" alt=\"\" class=\"wp-image-17135\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1-1024x465.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1-300x136.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1-768x349.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1-1536x698.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/b40d0022866ae9e726d941894f4f02fd-1.png 1593w\" 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\">Access Permissions Updated<\/div><div class=\"swell-block-step__body\">\n<p><strong>Columns A\u2013F<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"313\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-27-1024x313.png\" alt=\"\" class=\"wp-image-15755\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-27-1024x313.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-27-300x92.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-27-768x235.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-27-1536x470.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-27-2048x627.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">After execution, the access permissions for the selected files are updated.<br>The spreadsheet information is also replaced with the new access permission statuses.<\/p>\n\n\n\n<p><strong>Columns G\u2013M<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large u-mb-ctrl u-mb-40\"><img decoding=\"async\" width=\"1024\" height=\"298\" src=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-29-1024x298.png\" alt=\"\" class=\"wp-image-15757\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-29-1024x298.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-29-300x87.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-29-768x224.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-29-1536x448.png 1536w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/11\/image-29-2048x597.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Once the changes are completed, columns <strong>G\u2013L<\/strong> are reset and cleared.<br>Column <strong>M<\/strong> is updated with a timestamp indicating the successful execution.<\/p>\n<\/div><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading u-mb-ctrl u-mb-40\">\u6ce8\u610f\u4e8b\u9805<\/h2>\n\n\n\n<dl class=\"swell-block-dl\">\n<dt class=\"swell-block-dl__dt\">Changes to Access Permissions May Take Time to Reflect<\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<p>After running the script, there may be a delay before the changes to access permissions are reflected.<\/p>\n\n\n\n<p>If the changes are not visible immediately, please wait a while and check the permissions again.<\/p>\n<\/dd>\n\n\n\n<dt class=\"swell-block-dl__dt\"><strong>If No Timestamp is Added<\/strong><\/dt>\n\n\n\n<dd class=\"swell-block-dl__dd\">\n<p>If no timestamp appears, it is possible that the script did not execute successfully.<\/p>\n\n\n\n<p>Check the spreadsheet for missing input, especially in column <strong>H (&#8220;New Permissions&#8221;)<\/strong>.<\/p>\n\n\n\n<p>Leaving this column blank may prevent the script from applying changes to viewer or editor email addresses.<\/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>In this article, we explained how to update file access permissions in Google Drive in bulk using a Google Spreadsheet.<\/p>\n\n\n\n<p class=\"u-mb-ctrl u-mb-40\">This method reduces the effort required to manage sharing settings for multiple files, saving you time and improving efficiency.<\/p>\n\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\/google-calendar-free-time-template\/\" 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\/07\/ce7cc8b37e59afe6317fb52e1264cdbb-1024x538.jpg\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/ce7cc8b37e59afe6317fb52e1264cdbb-1024x538.jpg 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/ce7cc8b37e59afe6317fb52e1264cdbb-300x158.jpg 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/ce7cc8b37e59afe6317fb52e1264cdbb-768x403.jpg 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/07\/ce7cc8b37e59afe6317fb52e1264cdbb.jpg 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\">Google Calendar Free Time Finder Template\uff5cGoogle Sheets \u00d7 Apps Script<\/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-07-25\" aria-label=\"\u516c\u958b\u65e5\">2025\u5e747\u670825\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\/gas-youtube-data-acquisition\/\" 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\/ac181f5e36f9e3250cb7fb86a7dc9f03-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/ac181f5e36f9e3250cb7fb86a7dc9f03-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/ac181f5e36f9e3250cb7fb86a7dc9f03-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/ac181f5e36f9e3250cb7fb86a7dc9f03-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2024\/12\/ac181f5e36f9e3250cb7fb86a7dc9f03.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 Use the YouTube API to Fetch Video Data in Google Sheets: Automate with Google Apps Script!<\/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-21\" aria-label=\"\u516c\u958b\u65e5\">2024\u5e7412\u670821\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\/classification-chatgpt-googlesheets\/\" 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\/12d97cd9de79a7e37f9c2c38e4b6ce3d-1024x538.png\" alt=\"\" class=\"c-postThumb__img u-obf-cover\" srcset=\"https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/12d97cd9de79a7e37f9c2c38e4b6ce3d-1024x538.png 1024w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/12d97cd9de79a7e37f9c2c38e4b6ce3d-300x158.png 300w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/12d97cd9de79a7e37f9c2c38e4b6ce3d-768x403.png 768w, https:\/\/84office.jp\/wp-content\/uploads\/2025\/01\/12d97cd9de79a7e37f9c2c38e4b6ce3d.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 Efficiently Organize Business Card Data with ChatGPT API: Leveraging Google Sheets and AI<\/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-24\" aria-label=\"\u516c\u958b\u65e5\">2025\u5e741\u670824\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>In the previous article, we introduced how to list the access permissions of spreadsheet files. This time, we\u2019 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":17143,"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=15743","footnotes":""},"categories":[12],"tags":[],"class_list":["post-17131","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\/17131","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=17131"}],"version-history":[{"count":3,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/17131\/revisions"}],"predecessor-version":[{"id":22508,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/posts\/17131\/revisions\/22508"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/media\/17143"}],"wp:attachment":[{"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/media?parent=17131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/categories?post=17131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/84office.jp\/wp-json\/wp\/v2\/tags?post=17131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}