{"id":67299,"date":"2024-06-27T13:30:29","date_gmt":"2024-06-27T04:30:29","guid":{"rendered":"https:\/\/support.questetra.com\/?p=67299"},"modified":"2024-06-27T13:38:47","modified_gmt":"2024-06-27T04:38:47","slug":"googlesheets-appendtable","status":"publish","type":"post","link":"https:\/\/support.questetra.com\/en\/bpmn-icons\/googlesheets-appendtable\/","title":{"rendered":"Google Sheets: Append New Rows (Table type data)"},"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 Sheets: Append New Rows (Table type data)<\/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\/googlesheets-appendtable\/\">Google \u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8: \u884c\u8ffd\u52a0 (\u30c6\u30fc\u30d6\u30eb\u578b\u30c7\u30fc\u30bf)<\/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 appends values of a Table type data item at the last of the sheet.<\/p>\n\n\n\n<figure class=\"wp-block-image alignright has-custom-border is-style-default\"><img decoding=\"async\" src=\"data:image;base64,\niVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADbElEQVRYR8WXS0hUURjH\/2dGJFDz\nlqNimmORhAU5hRVFojgTQSTarl3azN5x1aboQdAqGoVc2AyOFoGCpQuN7E6MRIVW4BBZUqJkbYTw\n+H7M48Sdx3Ve986d0crFuDjfd8\/v+5\/vcQ7Bf\/4jyezPWfX1IKQKDDoAHIj\/P8AwBoCCYAwETnqF\n71f63YQAXEc1B19aE8DMAOGUfZhRgFig8rTQRieV85EF4Gw1DQC5r3zj6K0YBUMjNTn6pCAkATir\n3gJCmpRFnNDKQo18czyruACcVW8HIZcTfjYpA2anRkdjtEsMQHjkvefuoqawQvTxMV8w54S8Y2DM\n\/4uhmRGUZhfj9gcbBn+8lcZirIWaHOZwgwiAwJmrOkIGzro2lOeUJozzxcwITuYf8ts1v2lB39Sw\nHMTF8JwQAQLZrp4KT7hkAbj0LMxvLOHquwfonuQlIBiFyrsvVB2bADbDTQA3wr1SARD8F9zLuD7a\njq6JQSklblEjL+yHTQCrQWgk2akC7FCnY2d6hug+uzqHSy+vSapAjY5dIkCwwz2LtlaqwNz6Ihbd\nyxHuK551nHpqSpgLfgWkal4pQLxdlj1rKOqqTVgRAQCbwQmgKlUFUgIAhqmRrw4pMA1CtHIAK541\nLGxEyhxtr1apkbsjMC4SK4AxauKPhhRg8aIIPwLX7294NPEch3fvR\/d3HpUFOuzJ0IhuHuYF\/\/M9\nus\/eUQYgjE8jT5ICGJoZhU5TivbxPpwvPo2izLxNAJ8X9omBFAGs+oRHICjw6tdHHNMcRNvnXtRq\nz2BvZr4I4PZ58PBLfxIAzEWNDp3iJBQAeiYdOJJzAJ1fB2AoOoHCzFwRwOvzon\/6dRIAkUkYd\/RG\n58Do7DgqcsvQ+qkHdSWV0GYVRChwz\/VEOUBwMIWqQLhqyTaibU9CxvxDSXErFspwyb0q3VgAqAiB\nRkkZMsxTE++v120ZRik0ojjDSBjH3rTp8IH0V1oxwzzUnpKYcRxoyZEXkqELrTieVyYru9Si0DW1\nj+tjl4NnH1qQvZKltLO8kyi9JEBwOm7\/pZSxTmpyNETz\/atreUzksgqEFv0XFRB79E1J8dEICQfW\nkNLDRIQIPM3MYDArBhE2JhCeZpYtPc2iIw0ogmoQogMYB5DygA1zAYSCMeGR6pSLWHEOKJZ5i4Z\/\nAEwJzTC2ALrNAAAAAElFTkSuQmCC\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\">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<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: #C3C3C3;\">conf_OAuth2<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C1: OAuth2 Config<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdW<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C2: Target Spreadsheet ID<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdX<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C3: Target Sheet Title<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdT<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C4: Table type data item<span style=\"color:#990000;\"> *<\/span><\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdA<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-A: Field Name of Sub Data Item for Column-A<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdB<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-B: Field Name of Sub Data Item for Column-B<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdC<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-C: Field Name of Sub Data Item for Column-C<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdD<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-D: Field Name of Sub Data Item for Column-D<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdE<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-E: Field Name of Sub Data Item for Column-E<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdF<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-F: Field Name of Sub Data Item for Column-F<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdG<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-G: Field Name of Sub Data Item for Column-G<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdH<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-H: Field Name of Sub Data Item for Column-H<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdI<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-I: Field Name of Sub Data Item for Column-I<\/dd>\n<dt style=\"font-weight: 300; font-size: 50%; margin: -1em 0 0 0; color: #C3C3C3;\">conf_DataIdJ<\/dt><dd style=\"margin: -0.5em 0 0.1em 1em\">C-J: Field Name of Sub Data Item for Column-J<\/dd>\n\n<\/dl>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-lightbulb-exclamation\"><\/i> Notes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Spreadsheet ID is contained in the URL.\u3000https:\/\/docs.google.com\/spreadsheets\/d\/SPREADSHEETID\/edit#gid=0<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-images\"><\/i> Capture<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"98794\" data-permalink=\"https:\/\/support.questetra.com\/en\/bpmn-icons\/googlesheets-appendtable\/attachment\/googlesheets-appendtable_capture_en\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/12\/googlesheets-appendtable_capture_en.png?fit=1274%2C1290&amp;ssl=1\" data-orig-size=\"1274,1290\" 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=\"googlesheets-appendtable_capture_en\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/12\/googlesheets-appendtable_capture_en.png?fit=622%2C630&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/04\/Google-%E3%82%B9%E3%83%97%E3%83%AC%E3%83%83%E3%83%89%E3%82%B7%E3%83%BC%E3%83%88_%E8%A1%8C%E8%BF%BD%E5%8A%A0-%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E5%9E%8B%E3%83%87%E3%83%BC%E3%82%BF_%E8%8B%B1%E8%AA%9E_15_0.png?ssl=1\" alt=\"\" class=\"wp-image-98794\" style=\"border:10px solid #aaaaaa; padding:5px; margin:5px;\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><i class=\"fal fa-balance-scale\"><\/i> See also<\/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\" aria-label=\"Intermediate Error Catch Event (Boundary Type)\n(opens in a new tab)\">Intermediate Error Catch Event (Boundary Type)<\/a><\/li>\n<\/ul>\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-05-21\/google-sheets-row-append-by-table.xml\" target=\"_blank\" rel=\"noreferrer noopener\">google-sheets-row-append-by-table.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\/\/ OAuth2 config\n\/\/ Authorization Endpoint URL: https:\/\/accounts.google.com\/o\/oauth2\/auth?access_type=offline&amp;approval_prompt=force\n\/\/ Token Endpoint URL: https:\/\/accounts.google.com\/o\/oauth2\/token\n\/\/ Scope: https:\/\/www.googleapis.com\/auth\/spreadsheets\n\/\/ Consumer Key: (Get by Google Developers Console)\n\/\/ Consumer Secret: (Get by Google Developers Console)\n\nfunction main() {\n    const tableDataDef = configs.getObject(&quot;conf_DataIdT&quot;);\n    const oauth2 = configs.getObject(&quot;conf_OAuth2&quot;);\n    const spreadsheetId = retrieveStringData(&quot;conf_DataIdW&quot;, &quot;Target Spreadsheet ID&quot;);\n    const sheetName = retrieveStringData(&quot;conf_DataIdX&quot;, &quot;Target Sheet Title&quot;);\n    const fieldNames = getFieldNames();\n\n    \/\/ \u8ffd\u52a0\u3059\u308b\u30c7\u30fc\u30bf\u3092\u6e96\u5099\n    const rows = makeRows(tableDataDef, fieldNames);\n\n    \/\/ \u30b7\u30fc\u30c8\u540d\u304b\u3089\u30b7\u30fc\u30c8 ID \u306e\u53d6\u5f97\n    const sheetId = getSheetId(oauth2, spreadsheetId, sheetName);\n\n    \/\/ \u30c7\u30fc\u30bf\u306e\u8ffd\u52a0\n    appendData(oauth2, sheetId, spreadsheetId, rows);\n}\n\n\/**\n * \u6587\u5b57\u5217\u30c7\u30fc\u30bf\u3092 config \u304b\u3089\u8aad\u307f\u51fa\u3059\u3002\u7a7a\u3067\u3042\u308c\u3070\u30a8\u30e9\u30fc\u3002\n * @param  {String} confName config \u540d\n * @param  {String} label \u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u7528\u306e\u30e9\u30d9\u30eb\n * @return {String} string \u6587\u5b57\u5217\u30c7\u30fc\u30bf\n *\/\nfunction retrieveStringData( confName, label ){\n    let string = configs.get( confName );\n    const dataDef = configs.getObject( confName );\n    if (dataDef !== null) {\n        string = engine.findData(dataDef);\n    }\n    if (string === null || string === &quot;&quot;) {\n        throw new Error(`${label} is empty.`);\n    }\n    return string;\n}\n\n\/**\n * \u30b9\u30d7\u30ec\u30c3\u30c9\u30b7\u30fc\u30c8\u306e\u5404\u5217\u306b\u8ffd\u52a0\u3059\u308b\u30b5\u30d6\u30c7\u30fc\u30bf\u9805\u76ee\u306e\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u4e00\u89a7\u3092\u53d6\u5f97\n * @return {*[]}\n *\/\nfunction getFieldNames() {\n    const CONF_FIELD_NAMES = [\n        &apos;conf_DataIdA&apos;,\n        &apos;conf_DataIdB&apos;,\n        &apos;conf_DataIdC&apos;,\n        &apos;conf_DataIdD&apos;,\n        &apos;conf_DataIdE&apos;,\n        &apos;conf_DataIdF&apos;,\n        &apos;conf_DataIdG&apos;,\n        &apos;conf_DataIdH&apos;,\n        &apos;conf_DataIdI&apos;,\n        &apos;conf_DataIdJ&apos;,\n    ];\n\n    const fieldNames = CONF_FIELD_NAMES.map(conf =&gt; configs.get(conf));\n\n    if (fieldNames.every(fieldName =&gt; fieldName === null || fieldName === &apos;&apos;)) {\n        \/\/ \u5168\u9805\u76ee\u3001\u8a2d\u5b9a\u5024\u304c\u7a7a\u306a\u3089\u3001\u30a8\u30e9\u30fc\n        throw new Error(&quot;No Data to add is selected.&quot;);\n    }\n    return fieldNames;\n}\n\n\/**\n * \u30b7\u30fc\u30c8\u540d\u304b\u3089\u30b7\u30fc\u30c8 ID \u306e\u53d6\u5f97\n * @param {AuthSettingWrapper} oauth  OAuth2 \u8a8d\u8a3c\u8a2d\u5b9a\n * @param {String} spreadsheetId\n * @param {String} sheetName\n * @return {Number}\n *\/\nfunction getSheetId(oauth2, spreadsheetId, sheetName) {\n    const uri = `https:\/\/sheets.googleapis.com\/v4\/spreadsheets\/${encodeURIComponent(spreadsheetId)}?includeGridData=false`;\n    const response = httpClient.begin()\n        .authSetting(oauth2)\n        .get(uri);\n    const status = response.getStatusCode();\n    const responseJson = response.getResponseAsString();\n    if (status !== 200) {\n        engine.log(responseJson);\n        throw new Error(`Can&apos;t get sheet information. status: ${status}`);\n    }\n    const jsonObj = JSON.parse(responseJson);\n    engine.log(`SPREADSHEET (TITLE: ${jsonObj.properties.title}) has ${jsonObj.sheets.length} sheets`);\n    for (let i = 0; i &lt; jsonObj.sheets.length; i++) {\n        if (jsonObj.sheets[i].properties.title === sheetName) {\n            const sheetId = parseInt(jsonObj.sheets[i].properties.sheetId, 10);\n            engine.log(`SHEET TITLE: ${sheetName} exists (id: ${sheetId})`);\n            return sheetId;\n        }\n    }\n    \/\/ error (not exist)\n    throw new Error(`Sheet ${sheetName} does not exist`);\n}\n\n\/**\n * \u8ffd\u52a0\u7528\u306e\u884c\u30c7\u30fc\u30bf\u3092\u4f5c\u6210\n * @param {ProcessDataDefinitionView} tableDataDef\n * @param {Array&lt;String&gt;} fieldNames\n * @return {Array&lt;Object&gt;}\n *\/\nfunction makeRows(tableDataDef, fieldNames) {\n    \/\/ \u30c6\u30fc\u30d6\u30eb\u578b\u30c7\u30fc\u30bf\u304a\u3088\u3073\u30b5\u30d6\u30c7\u30fc\u30bf\u9805\u76ee\u306e\u5b9a\u7fa9\u3092\u53d6\u5f97\n    const tableData = engine.findData(tableDataDef);\n    if (tableData === null) {\n        throw new Error(&quot;the table data is empty.&quot;);\n    }\n    const subDataDefs = tableDataDef.getSubDataDefinitions();\n\n    \/\/ subDataDef \u306e\u30de\u30c3\u30d7\u3092\u4f5c\u6210\u3002\u30ad\u30fc\u306f\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u3002\n    const subDataDefMap = makeSubDataDefMap(subDataDefs);\n\n    \/\/\u884c\u30c7\u30fc\u30bf\u306e\u4f5c\u6210\n    const rowCount = tableData.size();\n    const rows = new Array(rowCount);\n    for (let i = 0; i &lt; rowCount; i++) {\n        const values = makeRowValues(i, tableData, subDataDefMap, fieldNames);\n        rows[i] = {values};\n    }\n\n    return rows;\n}\n\n\/**\n * SubDataDefinitionView \u306e Map \u3092\u4f5c\u6210\n * @param {Array&lt;SubDataDefinitionView&gt;} subDataDefs\n * @return {Map&lt;string, SubDataDefinitionView&gt;}\n *\/\nfunction makeSubDataDefMap(subDataDefs) {\n    const subDataDefMap = new Map();\n    for (let i = 0; i &lt; subDataDefs.length; i++) {\n        const def = subDataDefs[i];\n        const varName = def.getVarName();\n        if (varName !== null) {\n            subDataDefMap.set(varName, def);\n        }\n    }\n    return subDataDefMap;\n}\n\n\/**\n * AppendData \u7528\u3001\u5404\u884c\u306e\u5024\u3092\u4f5c\u6210\u3059\u308b\n * @param rowNumber\n * @param {ScriptListArray} tableData\n * @param {Map&lt;String, SubDataDefinitionView&gt;&gt;} subDataDefMap\n * @param {Array&lt;String&gt;} fieldName\n * @return {Array&lt;Object&gt;}\n *\/\nfunction makeRowValues(rowNumber, tableData, subDataDefMap, fieldNames) {\n    const values = new Array(fieldNames.length);\n    let flag = true;\n    \/\/ \u5f8c\u308d\u306e\u5217\u304b\u3089\u524d\u306e\u5217\u3078\n    for (let j = fieldNames.length - 1; j &gt;= 0; j--) {\n        const fieldName = fieldNames[j];\n        const cellValue = getCellValue(rowNumber, tableData, subDataDefMap, fieldName);\n        if (flag &amp;&amp; cellValue === &apos;&apos;) {\n            \/\/ \u5f8c\u308d\u306e\u5217\u306f\u3001\u7a7a\u3067\u3042\u308b\u9650\u308a null \u3092\u6307\u5b9a\n            values[j] = null;\n        } else {\n            \/\/ \u57fa\u672c\u3001stringValue\n            let valueType = &apos;stringValue&apos;;\n            if (cellValue !== &apos;&apos;) {\n                if (subDataDefMap.get(fieldName).matchDataType(&apos;DECIMAL&apos;)) {\n                    \/\/\u7a7a\u3067\u306f\u306a\u304f\u3001\u6570\u5024\u578b\u30c7\u30fc\u30bf\u306e\u5834\u5408\u306e\u307f\u3001numberValue\n                    valueType = &apos;numberValue&apos;;\n                }\n            }\n            values[j] = {\n                &quot;userEnteredValue&quot;: {\n                    [valueType]: cellValue\n                }\n            };\n            flag = false;\n        }\n    }\n    if (flag) {\n        throw new Error(&quot;There is an empty row in data to append.&quot;);\n    }\n    return values;\n}\n\n\/**\n * \u30bb\u30eb\u306e\u5024\u306e\u53d6\u5f97\n * @param {Number} rowNumber\n * @param {ScriptListArray} tableData\n * @param {Map&lt;String, SubDataDefinitionView&gt;} subDataDefMap\n * @param {String} fieldName\n * @return {String}\n *\/\nfunction getCellValue(rowNumber, tableData, subDataDefMap, fieldName) {\n    if (fieldName === &quot;&quot; || fieldName === null) {\n        \/\/ \u30b5\u30d6\u30c7\u30fc\u30bf\u9805\u76ee\u306e\u6307\u5b9a\u304c\u7121\u3044\u5834\u5408\n        return &apos;&apos;;\n    }\n    if (!subDataDefMap.has(fieldName)) {\n        \/\/when selected column doesn&apos;t exist\n        throw new Error(`Field Name ${fieldName} does not exist`);\n    }\n    const cellValue = tableData.get(rowNumber, fieldName);\n    if (cellValue.length &gt; 50000) {\n        \/\/when the number of letters in text is over 50000\n        throw new Error(&quot;Can&apos;t set text over 50,000 character.&quot;);\n    }\n    return cellValue;\n}\n\n\/**\n * \u30c7\u30fc\u30bf\u3092 Google Sheets \u306b\u9001\u4fe1\u3059\u308b\n * @param {AuthSettingWrapper} oauth  OAuth2 \u8a8d\u8a3c\u8a2d\u5b9a\n * @param {String} sheetId\n * @param {String} spreadsheetId\n * @param {Array&lt;Object&gt;} rows\n *\/\nfunction appendData(oauth2, sheetId, spreadsheetId, rows) {\n    const uri = `https:\/\/sheets.googleapis.com\/v4\/spreadsheets\/${encodeURIComponent(spreadsheetId)}:batchUpdate`;\n    const obj = {\n        requests: [{\n            appendCells: {\n                rows,\n                sheetId,\n                fields: &quot;*&quot;\n            }\n        }]\n    };\n    const response = httpClient.begin()\n        .authSetting(oauth2)\n        .body(JSON.stringify(obj), &quot;application\/json&quot;)\n        .post(uri);\n    const status = response.getStatusCode();\n    if (status !== 200) {\n        engine.log(response.getResponseAsString());\n        throw new Error(`Failed to append data. status: ${status}`);\n    }\n}\n<\/code><\/pre><\/div>\n<\/div><\/details><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This item appends values of a Table type data item at the last of the sheet.<\/p>\n","protected":false},"author":17,"featured_media":110732,"comment_status":"closed","ping_status":"closed","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":"","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":[396,3162],"class_list":["post-67299","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bpmn-icons","tag-google-sheets-api-v4","tag-google-workspace"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?fit=1200%2C675&ssl=1","uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?fit=1200%2C675&ssl=1",1200,675,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?fit=560%2C315&ssl=1",560,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?fit=768%2C432&ssl=1",768,432,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?fit=1024%2C576&ssl=1",1024,576,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?fit=1200%2C675&ssl=1",1200,675,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?fit=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=900%2C675&ssl=1",900,675,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=600%2C675&ssl=1",600,675,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=800%2C675&ssl=1",800,675,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/bpmn-icon-google-sheets.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":0,"uagb_excerpt":"This item appends values of a Table type data item at the last of the sheet.","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9DiIh-hvt","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":116684,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/google-sheet-table-add-sum\/","url_meta":{"origin":67299,"position":0},"title":"Adding Table Values to Google Sheets and Getting the Aggregate Value","author":"Hirotaka NISHI","date":"2021-11-11","format":false,"excerpt":"Adds the contents of a Table-type Data Item to a Google Sheet and retrieves the aggregated value. Various aggregations can be performed automatically depending on the spreadsheet settings.","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\/2021\/11\/eyecatch-google-sheet-table-add-sum-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\/2021\/11\/eyecatch-google-sheet-table-add-sum-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/11\/eyecatch-google-sheet-table-add-sum-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/11\/eyecatch-google-sheet-table-add-sum-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/11\/eyecatch-google-sheet-table-add-sum-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":119881,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/google-sheets-employee-master\/","url_meta":{"origin":67299,"position":1},"title":"Managing Employee Information in Google Spreadsheets with Workflow Apps","author":"Peter Glover","date":"2022-05-11","format":false,"excerpt":"Introducing an application to manipulate employee information managed in Google Spreadsheets from Questetra.","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\/2022\/03\/google-sheet-employee-master-fi-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\/2022\/03\/google-sheet-employee-master-fi-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/03\/google-sheet-employee-master-fi-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/03\/google-sheet-employee-master-fi-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/03\/google-sheet-employee-master-fi-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":77746,"url":"https:\/\/support.questetra.com\/en\/templates\/expense-record-flow-20161121\/","url_meta":{"origin":67299,"position":2},"title":"Expense Record Flow","author":"Hirotaka NISHI","date":"2021-03-01","format":false,"excerpt":"Reports and records expenses after approval\/correction. The Process for all employees is automatically started at the beginning of every month. The employee holds the [1. Report] Task until the closing date and inputs the expenses and payments on behalf of during that term. At the [3. Confirmation\/Adjustment] Step, the accounting\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\/2019\/07\/eye-catch-expense-record-flow-20161121-220-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\/07\/eye-catch-expense-record-flow-20161121-220-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/eye-catch-expense-record-flow-20161121-220-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/eye-catch-expense-record-flow-20161121-220-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/eye-catch-expense-record-flow-20161121-220-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":77695,"url":"https:\/\/support.questetra.com\/en\/templates\/approval-flow-budget-control-20160920\/","url_meta":{"origin":67299,"position":3},"title":"Approval Flow-Budget Control","author":"Hirotaka NISHI","date":"2022-01-17","format":false,"excerpt":"A Proposal-approval flow that automatically records the approved spending in a Google Sheet. When a new Issue is entered at the [1. Submit plan draft] Step, the \u201cBudget Consumption Log\u201d (Google sheet) is referred to, and the total expenditure so far is calculated automatically. At the Step of [2. Decision],\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\/2019\/07\/eye-catch-approval-flow-budget-control-20160920-220-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\/07\/eye-catch-approval-flow-budget-control-20160920-220-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/eye-catch-approval-flow-budget-control-20160920-220-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/eye-catch-approval-flow-budget-control-20160920-220-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/eye-catch-approval-flow-budget-control-20160920-220-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":97139,"url":"https:\/\/support.questetra.com\/en\/addons\/google-sheets-sheet-row-update-with-singleline-tsv\/","url_meta":{"origin":67299,"position":4},"title":"Google Sheets: Sheet Row, Update with Singleline TSV","author":"IMAMURA, Genichi","date":"2020-10-28","format":false,"excerpt":"Updates a Google Sheet with a single line of TSV data. Searches for an A-Column cell that exactly matches the first value of the TSV and overwrite only the first occurrence. The values will be parsed as if they were entered manually by the user. If no matching line exists,\u2026","rel":"","context":"In &quot;Add-ons&quot;","block_context":{"text":"Add-ons","link":"https:\/\/support.questetra.com\/en\/category\/addons\/"},"img":{"alt_text":"Google Sheets: Sheet Row, Update with Singleline TSV","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/Google-Sheets-Sheet-Row-Update-with-Singleline-TSV-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\/2020\/10\/Google-Sheets-Sheet-Row-Update-with-Singleline-TSV-en.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/Google-Sheets-Sheet-Row-Update-with-Singleline-TSV-en.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/Google-Sheets-Sheet-Row-Update-with-Singleline-TSV-en.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/10\/Google-Sheets-Sheet-Row-Update-with-Singleline-TSV-en.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":78460,"url":"https:\/\/support.questetra.com\/en\/developer-blog\/choices-google-sheets\/","url_meta":{"origin":67299,"position":5},"title":"Utilize Customer Data on Google Sheets as Choices","author":"Hirotaka NISHI","date":"2020-04-23","format":false,"excerpt":"Get the Customer List stored in Google Sheet via API, and save\/use it as the Options Master.","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\/2019\/07\/google-sheet-choice-master-featured-image.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\/07\/google-sheet-choice-master-featured-image.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/google-sheet-choice-master-featured-image.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/google-sheet-choice-master-featured-image.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2019\/07\/google-sheet-choice-master-featured-image.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\/67299","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=67299"}],"version-history":[{"count":32,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/67299\/revisions"}],"predecessor-version":[{"id":162676,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/posts\/67299\/revisions\/162676"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media\/110732"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/media?parent=67299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/categories?post=67299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.questetra.com\/en\/wp-json\/wp\/v2\/tags?post=67299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}