{"id":168490,"date":"2024-12-16T15:51:54","date_gmt":"2024-12-16T06:51:54","guid":{"rendered":"https:\/\/support.questetra.com\/?p=168490"},"modified":"2025-03-06T11:06:58","modified_gmt":"2025-03-06T02:06:58","slug":"service-task-google-drive-file-export","status":"publish","type":"post","link":"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-google-drive-file-export\/","title":{"rendered":"Google Drive: Export Google Workspace File as PDF"},"content":{"rendered":"\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"58\" data-attachment-id=\"113160\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/how-to-use-timer-start-event\/attachment\/advanced-banner-new-en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?fit=1200%2C68&amp;ssl=1\" data-orig-size=\"1200,68\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"advanced-banner-new-en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?fit=1024%2C58&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en-1024x58.png?resize=1024%2C58&#038;ssl=1\" alt=\"\" class=\"wp-image-113160\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=1024%2C58&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=600%2C34&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?resize=768%2C44&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/05\/advanced-banner-new-en.png?w=1200&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading has-background\" style=\"background-color:#ccffcc;margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:var(--wp--preset--spacing--20);padding-bottom:0;padding-left:var(--wp--preset--spacing--20)\"><strong>Google Drive: Export Google Workspace File as PDF<\/strong><\/h4>\n\n\n\n<p class=\"has-text-align-right has-background has-small-font-size mt-0 pt-0 wp-block-paragraph\" style=\"background-color:#ccffcc;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:var(--wp--preset--spacing--30);padding-bottom:0;padding-left:var(--wp--preset--spacing--30)\"><a href=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-google-drive-file-export\/\">Google \u30c9\u30e9\u30a4\u30d6: Google Workspace \u30d5\u30a1\u30a4\u30eb PDF \u30a8\u30af\u30b9\u30dd\u30fc\u30c8<\/a><\/p>\n\n\n\n<p class=\"has-background mt-0 pt-0 wp-block-paragraph\" style=\"background-color:#f0fff0;margin-top:0;margin-right:0;margin-bottom:var(--wp--preset--spacing--60);margin-left:0;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--40)\">This item downloads the specified Google Workspace files (such as Google Docs, Sheets, or Slides) in PDF format. You can download multiple files at once. When you download multiple files, you should write one File ID per line.<\/p>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title\">Basic Configs<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<dl style=\"0 0 -0.7em 0\">\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\"><\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">Step Name<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\"><\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">Note<\/dd>\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<figure class=\"wp-block-image alignright has-custom-border is-style-default\"><img decoding=\"async\" src=\"data:image;base64,\n        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAA71JREFUWEfF\n        V11oFFcU\/s7M7K6TRs1vK1VUSGmbCK2SB6VFgpLWlYC2omIDLaUlCBGfimwWgw9Fu9mW0ocSoUhE\n        aKmlgUgUyShiEUWSh4AW7L9CS5PGZhuTJmTi7swcmUn3d+ZOdtGy87Ts3HvOd77zfefeIZT5oVLy\n        h2MP3wTMViJqZqABQM1\/+6cIuMvMo4B8RYuGzhUbd0kArT1TK2VWj5CEg2DUFRWYkGALX5ikf3Kl\n        q2bGb48vgJ0x\/T2WEC86cWEmQoIsRIai6mkRCCGAcHy+F0ydRVW81CLik1qk4pDXMk8A4bj+NRhv\n        LRW3pPeEs1pEbXeTVPDPE63clc3NRB4DTs8JfX6V7d2soKVRgizlk5cyGBdvmbj8velLDDHez9VE\n        JoqtdoXU3\/wE19Io452tCtQgUP2Uu3u\/TliInE1CT\/pgICQM1p9LuyMTZUdMP06Eo37wYweC2LhO\n        wsQ0o245QZHzVxsm8O2IgS+vG74sMOPEpajabS\/KAAjH9Um\/6vdvUdD+qoKQAiykgFmdUb\/CzcLE\n        DCN+PoWfxi0xCEJCi6j1GQDOhCNrQLRjdQ2h+40g1tdnE\/4zy6gIkdOO3Mdi4OodE59eTPmbhKU9\n        9sR0IoZj870gsec7tivY1axAkbIxDQuY\/JexaiWBCoiYnmd8fsnAzV98BMl8UotWHHK27uzRhxnY\n        7AX55XUSjrQFULvcTbdNs92G2kr3u1u\/W4h+I1YjASNDXeqWRQZ69EnAe85Hdwew9QXZVeXsAqP3\n        soENayS0bZJR4EpHJ2eupTA4KmQhoXWpi00N9+j2qhyCF7l4\/SUZHdsUVC7Lr9Du87UfTXx8IYW1\n        dYRje4JYXe1m4d7fjI8GkxibYi9yLa1LlYUAbHEd3xdE0xoXLhQqPdchuZlsnZwfNXDqqqct8wC4\n        WlBK0FLA5gDMtsBLhJ+9HcSLz7qrH3\/AmFtgBJR8ym0uQwG4tGJawNBtE\/3D+Szki9DDhrubZbzb\n        EsCyQBaz3wASmX7sAePDgST+SBToINeGokF0Yn8Qm9ZLTlXMwF\/TjKdXuEewKHnSAPpHDHx1w0MD\n        uYPIcYLHKH7leRmHdyioqiCHdltU9u9inx\/+tNDd73E4FY5iO6DoMPqgLYBtTTLuzzBWVZHL7yIw\n        cw8Zfd8Z0G6754DnYSQ6jm2fd74WQMMzhMpQcdXb7br+s4nYoMd5IDqOnZFcxIWkWPpF64QXkvSG\n        sl7JsiDKeCn9X5go9VqeBlHWD5M0iLJ+mhUquSwfp49ru6X2PwLQFL0wM02BagAAAABJRU5ErkJg\n        gg==\n    \" alt=\"Auto Step icon\" class=\"has-border-color has-ast-global-color-4-border-color\" style=\"border-width:0.5em\"\/><\/figure>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title\">Configs for this Auto Step<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<dl style=\"0 0 -0.7em 0\">\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_Auth<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C1: Service Account Setting<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FileIds<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C2: File IDs to download (Write one per line)<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #aaa;\">conf_FileData<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C3: Data item to add the downloaded files<span style=\"color:#990000;\"> *<\/span><\/dd>\n\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--60)\"><span style=\"text-decoration: underline;\">Notes<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The files that will be downloaded must be shared in advance with the service account set in [C1: Service Account Setting]<\/li>\n\n\n\n<li>To set up [C1: Service Account Setting] :\n<ol class=\"wp-block-list\">\n<li>Prepare a&nbsp;<a href=\"https:\/\/cloud.google.com\/iam\/docs\/service-account-overview?hl=en\" target=\"_blank\" rel=\"noreferrer noopener\">service account<\/a>&nbsp;on Google Cloud Console\n<ul class=\"wp-block-list\">\n<li>Create or upload a&nbsp;<a href=\"https:\/\/cloud.google.com\/iam\/docs\/service-account-creds?hl=en#key-types\" target=\"_blank\" rel=\"noreferrer noopener\">service account key<\/a>\n<ul class=\"wp-block-list\">\n<li>If you&nbsp;<a href=\"https:\/\/cloud.google.com\/iam\/docs\/keys-create-delete?hl=en#creating\" target=\"_blank\" rel=\"noreferrer noopener\">create a service account key on Google Cloud Console<\/a>, you can download a JSON file containing the necessary information<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Create an OAuth2 JWT Bearer setting on Questetra BPM Suite and set it to C1\n<ul class=\"wp-block-list\">\n<li>Scope&nbsp;<code>https:\/\/www.googleapis.com\/auth\/drive.readonly<\/code>&nbsp;is required<\/li>\n\n\n\n<li>Set up other items as shown in the table below :<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><strong>Settings on Questetra BPM Suite<\/strong><\/th><th><strong>Corresponding Information<\/strong><br><strong>of Google Cloud Service Account Key<\/strong><\/th><th><strong>Property Name in JSON<\/strong>&nbsp;File<\/th><th><strong>Required or Not<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Client ID<\/td><td>OAuth2 Client ID<\/td><td>client_id<\/td><td>Not Required<\/td><\/tr><tr><td>Private Key ID<\/td><td>Key ID<\/td><td>private_key_id<\/td><td>Required<\/td><\/tr><tr><td>Private Key<\/td><td>Private Key<\/td><td>private_key<\/td><td>Required<\/td><\/tr><tr><td>Custom Secret Information 1<\/td><td>Email Address<\/td><td>client_email<\/td><td>Required<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"609\" data-attachment-id=\"159853\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/markdown-basic\/attachment\/google-drive-auth-setting_capture_en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-drive-auth-setting_capture_en.png?fit=1106%2C658&amp;ssl=1\" data-orig-size=\"1106,658\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"google-drive-auth-setting_capture_en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-drive-auth-setting_capture_en.png?fit=1024%2C609&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-drive-auth-setting_capture_en.png?resize=1024%2C609&#038;ssl=1\" alt=\"\" class=\"wp-image-159853\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-drive-auth-setting_capture_en.png?resize=1024%2C609&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-drive-auth-setting_capture_en.png?resize=529%2C315&amp;ssl=1 529w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-drive-auth-setting_capture_en.png?resize=768%2C457&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/04\/google-drive-auth-setting_capture_en.png?w=1106&amp;ssl=1 1106w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"text-decoration:underline\">Errors<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>\"code\": 403, \"message\": \"Google Drive API has not been used in project 123456789012 before or it is disabled.\"<\/code>.\n<ul class=\"wp-block-list\">\n<li>&#8216;Google Drive API&#8217; needs to be enabled<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><code>\"code\": 404, \"message\": \"File not found:\"<\/code>\n<ul class=\"wp-block-list\">\n<li>The file may not exist<\/li>\n\n\n\n<li>&#8216;Google Service Account&#8217; may not have permission to read the file<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--60);text-decoration:underline\">Capture<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full has-custom-border is-style-rounded is-style-rounded--1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1192\" height=\"1068\" data-attachment-id=\"168491\" data-permalink=\"https:\/\/support.questetra.com\/en\/developer-blog\/markdown-basic\/attachment\/google-drive-file-export_capture_en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/google-drive-file-export_capture_en.png?fit=1192%2C1068&amp;ssl=1\" data-orig-size=\"1192,1068\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"google-drive-file-export_capture_en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/google-drive-file-export_capture_en.png?fit=703%2C630&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/google-drive-file-export_capture_en.png?resize=1192%2C1068&#038;ssl=1\" alt=\"\" class=\"has-border-color wp-image-168491\" style=\"border-color:#009900;border-width:3px;border-radius:9px\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/google-drive-file-export_capture_en.png?w=1192&amp;ssl=1 1192w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/google-drive-file-export_capture_en.png?resize=352%2C315&amp;ssl=1 352w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/google-drive-file-export_capture_en.png?resize=703%2C630&amp;ssl=1 703w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/google-drive-file-export_capture_en.png?resize=768%2C688&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--60)\"><span style=\"text-decoration: underline;\">See Also<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/intermediate-error-catch-event-boundary-type\/\" target=\"_blank\" rel=\"noreferrer noopener\">Intermediate Error Catch Event (Boundary Type)<\/a><\/li>\n<\/ul>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details><summary class=\"wp-block-coblocks-accordion-item__title\">Script (click to open)<\/summary><div class=\"wp-block-coblocks-accordion-item__content\">\n<ul class=\"wp-block-list\">\n<li>An XML file that contains the code below is available to download\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/raw.githubusercontent.com\/Questetra\/Addon-XML\/release-2024-11-22\/google-drive-file-export.xml\" target=\"_blank\" rel=\"noreferrer noopener\">google-drive-file-export.xml<\/a> (C) Questetra, Inc. (MIT License)<\/li>\n\n\n\n<li>If you are using Professional, you can modify the contents of this file and use it as your own add-on auto step<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-js\" data-lang=\"JavaScript\"><code>\n\nconst REQUEST_NUM_PER_FILE = 4; \/\/ Make 4 requests per file\nconst CONTENT_TYPE = &#39;application\/pdf&#39;;\n\nfunction main() {\n    \/\/\/\/\/\/ == \u5de5\u7a0b\u30b3\u30f3\u30d5\u30a3\u30b0\u30fb\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30c7\u30fc\u30bf\u306e\u53c2\u7167 \/ Config & Data Retrieving ==\n    const auth = configs.getObject(&#39;conf_Auth&#39;);\n    const fileIds = retrieveFileIds();\n\n    const fileDef = configs.getObject(&#39;conf_FileData&#39;);\n    let files = engine.findData( fileDef );\n    if (files === null) {\n        files = new java.util.ArrayList();\n    }\n\n    \/\/\/\/\/\/ == \u6f14\u7b97 \/ Calculating ==\n    if (fileIds.length * REQUEST_NUM_PER_FILE &gt; httpClient.getRequestingLimit()) {\n        throw new Error(&#39;Number of File IDs exceeds the limit.&#39;);\n    }\n    fileIds.forEach(fileId =&gt; {\n        const originalFileName = getFileMetadata(auth, fileId);\n        const saveAs = `${originalFileName}.pdf`;\n        const content = exportFile(auth, fileId);\n        const qfile = new com.questetra.bpms.core.event.scripttask.NewQfile(\n            saveAs, CONTENT_TYPE, content\n        );\n        files.add(qfile);\n    });\n\n    \/\/\/\/\/\/ == \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30c7\u30fc\u30bf\u3078\u306e\u4ee3\u5165 \/ Data Updating ==\n    engine.setData(fileDef, files);\n}\n\n\/**\n * Read the file ID from the config\n * Error if file ID is not set.\n * @returns {Array&lt;String&gt;} an array of file IDs\n *\/\nconst retrieveFileIds = () =&gt; {\n    let fileIdsStr = configs.get(&#39;conf_FileIds&#39;);\n    const fileIdsDef = configs.getObject(&#39;conf_FileIds&#39;);\n    if (fileIdsDef !== null) {\n        fileIdsStr = engine.findData(fileIdsDef);\n    }\n    if (fileIdsStr === null) {\n        throw new Error(&#39;No File IDs.&#39;);\n    }\n    const fileIds =  fileIdsStr.split(&#39;\\n&#39;).filter(key =&gt; key.length !== 0);\n    if (fileIds.length === 0) {\n        throw new Error(&#39;No File IDs.&#39;);\n    }\n    return fileIds;\n};\n\nconst URL_TOKEN_REQUEST = &#39;https:\/\/oauth2.googleapis.com\/token&#39;;\nconst SCOPE = &#39;https:\/\/www.googleapis.com\/auth\/drive.readonly&#39;;\n\n\/**\n * @param auth HTTP Authentication Settings\n * @returns {any} an object containing the access token\n *\/\nconst getAccessToken = (auth) =&gt; {\n    const privateKeyId = auth.getPrivateKeyId();\n    const privateKey = auth.getPrivateKey();\n    const serviceAccount = auth.getCustomSecret1();\n    const scope = auth.getScope();\n    if (!scope.split(&#39; &#39;).includes(SCOPE)) {\n        throw new Error(`Scope ${SCOPE} must be included in the scope.`);\n    }\n    if (privateKeyId === &#39;&#39;) {\n        throw new Error(&#39;Private Key ID is required.&#39;);\n    }\n    if (privateKey === &#39;&#39;) {\n        throw new Error(&#39;Private Key is required.&#39;);\n    }\n    if (serviceAccount === &#39;&#39;) {\n        throw new Error(&#39;Service Account must be set to Custom Secret 1.&#39;);\n    }\n    const header = {\n        &quot;alg&quot;: &quot;RS256&quot;,\n        &quot;typ&quot;: &quot;at+jwt&quot;,\n        &quot;kid&quot;: privateKeyId\n    };\n    const now = Math.floor(Date.now() \/ 1000);\n    const payload = {\n        &quot;iss&quot;: serviceAccount,\n        &quot;aud&quot;: URL_TOKEN_REQUEST,\n        &quot;sub&quot;: &#39;&#39;,\n        &quot;iat&quot;: now,\n        &quot;exp&quot;: now + 3600,\n        \/**\n         * https:\/\/developers.google.com\/identity\/protocols\/oauth2\/service-account#jwt-auth\n         * \u201cwithout OAuth\u201d, but it seems to be 1 hour even with OAuth.\n         * If it is longer than 1 hour, an error occurs. If it is shorter, a 1 hour token is returned.\n         *\/\n        scope\n    };\n    const keyB = rsa.readKeyFromPkcs8(privateKey);\n    const assertion = jwt.build(header, payload, keyB);\n\n    const response = httpClient.begin()\n        .formParam(&quot;grant_type&quot;, &quot;urn:ietf:params:oauth:grant-type:jwt-bearer&quot;)\n        .formParam(&#39;assertion&#39;, assertion)\n        .post(URL_TOKEN_REQUEST);\n    const responseText = response.getResponseAsString();\n    if (response.getStatusCode() !== 200) {\n        engine.log(responseText);\n        throw new Error(`Failed to get Access token. status: ${response.getStatusCode()}`);\n    }\n    const result = JSON.parse(response.getResponseAsString());\n    if (result.access_token === undefined) {\n        engine.log(responseText);\n        throw new Error(`Failed to get Access token. access token not found.`);\n    }\n    return result;\n};\n\n\/**\n * Get File Metadata\n * @param auth HTTP Authentication Settings\n * @param fileId File ID\n * @returns {String} File name\n *\/\nconst getFileMetadata = (auth, fileId) =&gt; {\n    const URL = `https:\/\/www.googleapis.com\/drive\/v3\/files\/${encodeURIComponent(fileId)}`;\n\n    const response = httpClient.begin()\n        .oauth2JwtBearer(auth, () =&gt; getAccessToken(auth))\n        .queryParam(&quot;supportsAllDrives&quot;, &quot;true&quot;)\n        .queryParam(&quot;fields&quot;, &quot;name&quot;) \/\/ Get file name only\n        .get(URL);\n\n    const status = response.getStatusCode();\n    const respTxt = response.getResponseAsString();\n    if (status !== 200) {\n        engine.log(respTxt);\n        throw new Error(`Failed to get metadata of file. status: ${status}`);\n    }\n    const respJson = JSON.parse(respTxt);\n    return respJson.name;\n};\n\n\/**\n * File Export\n * @param auth HTTP Authentication Settings\n * @param fileId File ID\n * @returns {ByteArrayWrapper} The binary data of the file\n *\/\nconst exportFile = (auth, fileId) =&gt; {\n    const URL = `https:\/\/www.googleapis.com\/drive\/v3\/files\/${encodeURIComponent(fileId)}\/export`;\n\n    const response = httpClient.begin()\n        .oauth2JwtBearer(auth, () =&gt; getAccessToken(auth))\n        .queryParam(&quot;mimeType&quot;, CONTENT_TYPE)\n        .get(URL);\n\n    const status = response.getStatusCode();\n    const respTxt = response.getResponseAsString();\n    if (status !== 200) {\n        engine.log(respTxt);\n        throw new Error(`Failed to export file. status: ${status}`);\n    }\n    return response.getResponse();\n};\n<\/code><\/pre><\/div>\n<\/div><\/details><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This item downloads the specified Google Workspace files (such as Google Docs, Sheets, or Slides) in PDF format. You can download multiple files at once. When you download multiple files, you should write one File ID per line.<\/p>\n","protected":false},"author":17,"featured_media":168834,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uag_custom_page_level_css":"","advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"{title}\n\n{excerpt}\n\n{url}","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[551],"tags":[3162],"class_list":["post-168490","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bpmn-icons","tag-google-workspace"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1","uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1",1200,675,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=560%2C315&ssl=1",560,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=768%2C432&ssl=1",768,432,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1024%2C576&ssl=1",1024,576,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1",1200,675,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=900%2C675&ssl=1",900,675,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=600%2C675&ssl=1",600,675,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=800%2C675&ssl=1",800,675,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1",1200,675,true]},"uagb_author_info":{"display_name":"Shiho Tatsumi","author_link":"https:\/\/support.questetra.com\/en\/author\/tatsumi48c607ec82\/"},"uagb_comment_info":1,"uagb_excerpt":"This item downloads the specified Google Workspace files (such as Google Docs, Sheets, or Slides) in PDF format. You can download multiple files at once. When you download multiple files, you should write one File ID per line.","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9DiIh-HPA","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":170965,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/google-drive-pdf-export\/","url_meta":{"origin":168490,"position":0},"title":"Create a PDF File Using Google Drive","author":"komatsuquestetra","date":"2025-02-25","format":false,"excerpt":"Learn how to create PDF files using automated steps in Google Drive.","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/01\/p2448415-1614-2-1.png?fit=1200%2C686&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/01\/p2448415-1614-2-1.png?fit=1200%2C686&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/01\/p2448415-1614-2-1.png?fit=1200%2C686&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/01\/p2448415-1614-2-1.png?fit=1200%2C686&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/01\/p2448415-1614-2-1.png?fit=1200%2C686&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":76390,"url":"https:\/\/support.questetra.com\/en\/bpmn-icons\/service-task-google-drive-file-upload\/","url_meta":{"origin":168490,"position":1},"title":"Google Drive: File Upload","author":"Hirotaka NISHI","date":"2019-04-23","format":false,"excerpt":"Uploads files specified in File Type Data Item to the specified folder of Google Drive. Capable of obtaining the file ID, the display URL, and the download URL as the response and storing them in a String type Data Item.","rel":"","context":"In &quot;BPMN Icons&quot;","block_context":{"text":"BPMN Icons","link":"https:\/\/support.questetra.com\/en\/category\/bpmn-icons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":74763,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/google-drive-items\/","url_meta":{"origin":168490,"position":2},"title":"Utilizing Google Drive from Workflow &#8211; Sending files to people outside the company","author":"Hirotaka NISHI","date":"2020-10-30","format":false,"excerpt":"Google Drive is a cloud storage service offered by Google. I will explain automatic Step for utilizing Google Drive in a Workflow App.","rel":"","context":"In &quot;Questetra Developers Blog&quot;","block_context":{"text":"Questetra Developers Blog","link":"https:\/\/support.questetra.com\/en\/category\/developer-blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/google-drive-questetra.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/google-drive-questetra.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/google-drive-questetra.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/google-drive-questetra.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/google-drive-questetra.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":71599,"url":"https:\/\/support.questetra.com\/en\/bpmn-icons\/googledrive-folderdelete\/","url_meta":{"origin":168490,"position":3},"title":"Google Drive: Delete File \/ Folder","author":"Hirotaka NISHI","date":"2024-12-12","format":false,"excerpt":"This item deletes files or folders on Google Drive.","rel":"","context":"In &quot;BPMN Icons&quot;","block_context":{"text":"BPMN Icons","link":"https:\/\/support.questetra.com\/en\/category\/bpmn-icons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/bpmn-icon-service-task-google-drive2024.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":168738,"url":"https:\/\/support.questetra.com\/en\/templates\/estimate-creation-flow-20241120\/","url_meta":{"origin":168490,"position":4},"title":"Quote Approval Process, Google Drive\/Sheets Connectivity","author":"Tsuyoshi Kusaka","date":"2024-12-12","format":false,"excerpt":"This is a process that manages everything from drafting quotations and their approval to recording whether they are won or lost. After approval by a supervisor, a PDF file of the quotation with a stamp is automatically generated (using Google Sheets and Google Drive). After the order is confirmed, the\u2026","rel":"","context":"In &quot;Workflow Apps&quot;","block_context":{"text":"Workflow Apps","link":"https:\/\/support.questetra.com\/en\/category\/templates\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/eyecatch-estimate-creation-flow-20241120-en.png?fit=960%2C540&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/eyecatch-estimate-creation-flow-20241120-en.png?fit=960%2C540&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/eyecatch-estimate-creation-flow-20241120-en.png?fit=960%2C540&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2024\/12\/eyecatch-estimate-creation-flow-20241120-en.png?fit=960%2C540&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":105633,"url":"https:\/\/support.questetra.com\/en\/addons\/google-drive-gfile-export-as-pdf-2021\/","url_meta":{"origin":168490,"position":5},"title":"Google Drive #GFile: Export as PDF","author":"IMAMURA, Genichi","date":"2021-04-19","format":false,"excerpt":"Stores a Google file as Workflow data after converting it to a PDF file. It is also possible to change the file name. If a file other than a Google file (Docs\/Sheets\/Slides, etc.) is specified an error will occur.","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/09\/Google-Drive-GFile-Export-as-PDF-en.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/09\/Google-Drive-GFile-Export-as-PDF-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/09\/Google-Drive-GFile-Export-as-PDF-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/09\/Google-Drive-GFile-Export-as-PDF-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/09\/Google-Drive-GFile-Export-as-PDF-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"amp_enabled":false,"_links":{"self":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/168490","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/comments?post=168490"}],"version-history":[{"count":7,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/168490\/revisions"}],"predecessor-version":[{"id":171362,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/168490\/revisions\/171362"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media\/168834"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media?parent=168490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/categories?post=168490"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/tags?post=168490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}