{"id":289553,"date":"2026-03-28T18:47:29","date_gmt":"2026-03-28T18:47:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sheetfusion\/"},"modified":"2026-05-21T23:37:32","modified_gmt":"2026-05-21T23:37:32","slug":"sheetfusion","status":"publish","type":"plugin","link":"https:\/\/bel.wordpress.org\/plugins\/sheetfusion\/","author":23461917,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.3.3","stable_tag":"2.3.3","tested":"7.0","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"SheetFusion - Sync Google Sheets Into Tables. No Row Limits, No API Keys.","header_author":"Isomite","header_description":"Display public Google Sheets as interactive tables with sorting, search, pagination, filtering, export, and column visibility \u2014 no API key required.","assets_banners_color":"192426","last_updated":"2026-05-21 23:37:32","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/isomite.com\/sheetfusion","header_author_uri":"https:\/\/isomite.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":463,"num_ratings":2,"support_threads":1,"support_threads_resolved":1,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.1.0":{"tag":"2.1.0","author":"isomite","date":"2026-03-28 18:47:02"},"2.1.1":{"tag":"2.1.1","author":"isomite","date":"2026-04-03 23:37:38"},"2.1.2":{"tag":"2.1.2","author":"isomite","date":"2026-04-27 23:23:43"},"2.2.0":{"tag":"2.2.0","author":"isomite","date":"2026-05-07 22:58:29"},"2.3.0":{"tag":"2.3.0","author":"isomite","date":"2026-05-10 15:40:41"},"2.3.1":{"tag":"2.3.1","author":"isomite","date":"2026-05-11 00:06:04"},"2.3.2":{"tag":"2.3.2","author":"isomite","date":"2026-05-21 23:11:54"},"2.3.3":{"tag":"2.3.3","author":"isomite","date":"2026-05-21 23:37:32"}},"upgrade_notice":{"2.2.0":"<p>Adds saved tables, visual customization, and richer frontend controls while preserving existing shortcodes.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3494129,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3494129,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3494129,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3494129,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3542930,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"landingPage\":\"\\\/sheetfusion-demo\\\/\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"phpExtensionBundles\":[\"kitchen-sink\"],\"features\":{\"networking\":true},\"steps\":[{\"step\":\"login\",\"username\":\"admin\",\"password\":\"password\"},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"sheetfusion\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"SheetFusion Playground Demo\",\"blogdescription\":\"Google Sheets to WordPress tables without API keys\",\"permalink_structure\":\"\\\/%postname%\\\/\"}},{\"step\":\"mkdir\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\"},{\"step\":\"writeFile\",\"path\":\"\\\/wordpress\\\/wp-content\\\/mu-plugins\\\/sheetfusion-playground-demo.php\",\"data\":\"<?php\\n\\\/**\\n * SheetFusion Playground demo helper.\\n *\\n * This mu-plugin supplies a deterministic demo CSV for Playground only, so the\\n * demo does not rely on a real Google account or a public spreadsheet that could\\n * be deleted later.\\n *\\\/\\n\\nadd_filter( 'pre_http_request', function ( $preempt, $parsed_args, $url ) {\\n    $demo_sheet_id = '1SheetFusionPlaygroundDemoPublicSheet000000000';\\n\\n    if ( false === strpos( $url, 'docs.google.com\\\/spreadsheets' ) || false === strpos( $url, $demo_sheet_id ) ) {\\n        return $preempt;\\n    }\\n\\n    $csv = implode( \\\"\\\\n\\\", array(\\n        'Camera,Channels,Resolution,Parking Mode,GPS,WiFi,Typical Price,Rating,Status',\\n        'Viofo A229 Pro,3CH,4K + 2K + 1080p,Buffered,Optional,Yes,$329,4.7,Popular',\\n        'Vantrue N4 Pro,3CH,4K + 1080p + 1080p,Buffered,Optional,Yes,$299,4.5,Popular',\\n        '70mai A810,2CH,4K + 1080p,Time-lapse,Optional,Yes,$179,4.4,Value Pick',\\n        'Garmin Dash Cam Mini 3,1CH,1080p,Impact Detection,No,Yes,$129,4.2,Compact',\\n        'BlackVue DR970X Plus,2CH,4K + 1080p,Buffered,Yes,Yes,$469,4.6,Premium',\\n        'Thinkware U3000,2CH,4K + 2K,Buffered,Yes,Yes,$399,4.6,Premium',\\n        'DDPAI N5 Dual,2CH,4K + 1080p,Time-lapse,Optional,Yes,$169,4.3,Value Pick',\\n        'Rove R3,3CH,1440p + 1080p + 1080p,Buffered,Yes,Yes,$199,4.1,Budget 3CH',\\n        'FineVu GX1000 Cloud,2CH,2K + 2K,Buffered,Yes,Yes,$349,4.3,Cloud Ready',\\n        'Nextbase 622GW,1CH,4K,Impact Detection,Yes,Yes,$349,4.2,Premium',\\n        'Miofive S1 Ultra,2CH,4K + 2K,Buffered,Yes,Yes,$249,4.4,Mid-range',\\n        'Redtiger F7NP,2CH,4K + 1080p,Impact Detection,Yes,Yes,$119,4.0,Budget'\\n    ) );\\n\\n    return array(\\n        'headers'  => array( 'content-type' => 'text\\\/csv; charset=utf-8' ),\\n        'body'     => $csv,\\n        'response' => array(\\n            'code'    => 200,\\n            'message' => 'OK',\\n        ),\\n        'cookies'  => array(),\\n        'filename' => null,\\n    );\\n}, 10, 3 );\\n\\nadd_action( 'wp_enqueue_scripts', function () {\\n    $css = '\\n        .sf-demo-hero{border:1px solid #e7e7e7;border-radius:18px;padding:28px;margin:24px 0;background:linear-gradient(135deg,#fff,#f7f7f7)}\\n        .sf-demo-hero h1{margin-top:0;font-size:clamp(2rem,4vw,3.5rem);line-height:1.05}\\n        .sf-demo-hero p{font-size:1.1rem;max-width:760px}\\n        .sf-demo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin:24px 0}\\n        .sf-demo-card{border:1px solid #e7e7e7;border-radius:14px;padding:18px;background:#fff}\\n        .sf-demo-card strong{display:block;margin-bottom:6px}\\n        .sf-demo-shortcode{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;background:#111;color:#fff;border-radius:10px;padding:14px;overflow:auto}\\n    ';\\n    wp_register_style( 'sheetfusion-playground-demo', false, array(), '1.0.0' );\\n    wp_enqueue_style( 'sheetfusion-playground-demo' );\\n    wp_add_inline_style( 'sheetfusion-playground-demo', $css );\\n} );\\n\"},{\"step\":\"runPHP\",\"code\":\"<?php\\nrequire_once '\\\/wordpress\\\/wp-load.php';\\n\\n$demo_sheet_id = '1SheetFusionPlaygroundDemoPublicSheet000000000';\\n\\n$page_content = '<!-- wp:group {\\\"layout\\\":{\\\"type\\\":\\\"constrained\\\"}} -->\\n<div class=\\\"wp-block-group\\\">\\n<!-- wp:html -->\\n<section class=\\\"sf-demo-hero\\\">\\n  <h1>SheetFusion Demo<\\\/h1>\\n  <p>SheetFusion turns a published Google Sheet into a searchable, sortable, responsive WordPress table. This Playground demo uses a local mock of Google Sheets CSV output so the demo is stable and does not require an API key, OAuth, or a Google account.<\\\/p>\\n<\\\/section>\\n<!-- \\\/wp:html -->\\n\\n<!-- wp:html -->\\n<div class=\\\"sf-demo-grid\\\">\\n  <div class=\\\"sf-demo-card\\\"><strong>No API keys<\\\/strong>Uses public CSV export from published sheets.<\\\/div>\\n  <div class=\\\"sf-demo-card\\\"><strong>Interactive tables<\\\/strong>Search, sort, paginate, and export.<\\\/div>\\n  <div class=\\\"sf-demo-card\\\"><strong>Responsive modes<\\\/strong>Try desktop and mobile widths.<\\\/div>\\n  <div class=\\\"sf-demo-card\\\"><strong>Shortcode ready<\\\/strong>Drop a shortcode into posts or pages.<\\\/div>\\n<\\\/div>\\n<!-- \\\/wp:html -->\\n\\n<!-- wp:heading -->\\n<h2 class=\\\"wp-block-heading\\\">Live Table<\\\/h2>\\n<!-- \\\/wp:heading -->\\n\\n<!-- wp:paragraph -->\\n<p>This table is rendered by SheetFusion using a direct shortcode. Search for \\u201c4K\\u201d, sort by rating, or try the export buttons.<\\\/p>\\n<!-- \\\/wp:paragraph -->\\n\\n<!-- wp:shortcode -->\\n[sheetfusion id=\\\"' . esc_attr( $demo_sheet_id ) . '\\\" sheet=\\\"Demo\\\" theme=\\\"editorial\\\" density=\\\"comfortable\\\" responsive=\\\"cards\\\" page_length=\\\"6\\\" search=\\\"true\\\" pagination=\\\"true\\\" info=\\\"true\\\" length_menu=\\\"true\\\" export=\\\"csv,excel,print\\\" sticky_header=\\\"true\\\"]\\n<!-- \\\/wp:shortcode -->\\n\\n<!-- wp:heading -->\\n<h2 class=\\\"wp-block-heading\\\">Shortcode Used<\\\/h2>\\n<!-- \\\/wp:heading -->\\n\\n<!-- wp:html -->\\n<pre class=\\\"sf-demo-shortcode\\\">[sheetfusion id=\\\"' . esc_html( $demo_sheet_id ) . '\\\" sheet=\\\"Demo\\\" theme=\\\"editorial\\\" density=\\\"comfortable\\\" responsive=\\\"cards\\\" page_length=\\\"6\\\" search=\\\"true\\\" pagination=\\\"true\\\" info=\\\"true\\\" length_menu=\\\"true\\\" export=\\\"csv,excel,print\\\" sticky_header=\\\"true\\\"]<\\\/pre>\\n<!-- \\\/wp:html -->\\n\\n<!-- wp:heading -->\\n<h2 class=\\\"wp-block-heading\\\">Admin Walkthrough<\\\/h2>\\n<!-- \\\/wp:heading -->\\n\\n<!-- wp:list -->\\n<ul>\\n<li>Open <strong>SheetFusion \\u2192 Table Setup<\\\/strong> to create a saved table.<\\\/li>\\n<li>Use the same demo Sheet ID: <code>' . esc_html( $demo_sheet_id ) . '<\\\/code> and tab name <code>Demo<\\\/code>.<\\\/li>\\n<li>Experiment with themes, density, responsive mode, sorting, exports, and sticky header.<\\\/li>\\n<li>Insert the SheetFusion block on a new page and choose a saved table from the dropdown.<\\\/li>\\n<\\\/ul>\\n<!-- \\\/wp:list -->\\n<\\\/div>\\n<!-- \\\/wp:group -->';\\n\\n$page_id = wp_insert_post( array(\\n    'post_title'   => 'SheetFusion Demo',\\n    'post_name'    => 'sheetfusion-demo',\\n    'post_status'  => 'publish',\\n    'post_type'    => 'page',\\n    'post_content' => $page_content,\\n) );\\n\\nif ( $page_id && ! is_wp_error( $page_id ) ) {\\n    update_option( 'show_on_front', 'page' );\\n    update_option( 'page_on_front', $page_id );\\n}\\n\\nflush_rewrite_rules();\\n?>\"}]}"}},"all_blocks":{"sheetfusion\/table":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"sheetfusion\/table","version":"2.3.3","title":"SheetFusion Table","category":"embed","icon":"media-spreadsheet","description":"Embed a public Google Sheet as an interactive, sortable, searchable table with no API key required.","keywords":["google sheets","table","spreadsheet","embed","data"],"textdomain":"sheetfusion","attributes":{"table":{"type":"integer","default":0},"sourceMode":{"type":"string","default":"saved"},"id":{"type":"string","default":""},"sheet":{"type":"string","default":""},"caption":{"type":"string","default":""},"theme":{"type":"string","default":"clean"},"density":{"type":"string","default":"comfortable"},"responsive":{"type":"string","default":"priority"},"layout":{"type":"string","default":"table"},"pageLength":{"type":"integer","default":25},"orderColumn":{"type":"integer","default":1},"orderDir":{"type":"string","default":"asc"},"export":{"type":"string","default":"csv,excel,pdf,print"},"colVisibility":{"type":"boolean","default":false},"filterColumn":{"type":"integer","default":0},"filterValue":{"type":"string","default":""},"filterMode":{"type":"string","default":"contains"}},"supports":{"html":false,"align":["wide","full"]},"editorScript":"file:..\/..\/assets\/js\/blocks.js","editorStyle":"file:..\/..\/assets\/css\/blocks-editor.css"}},"tagged_versions":["2.1.0","2.1.1","2.1.2","2.2.0","2.3.0","2.3.1","2.3.2","2.3.3"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[15862,25296,148076,9471,2289],"plugin_category":[56],"plugin_contributors":[258878],"plugin_business_model":[],"class_list":["post-289553","plugin","type-plugin","status-publish","hentry","plugin_tags-data-table","plugin_tags-google-sheets","plugin_tags-gutenberg","plugin_tags-spreadsheet","plugin_tags-table","plugin_category-social-and-sharing","plugin_contributors-isomite","plugin_committers-isomite"],"banners":{"banner":"https:\/\/ps.w.org\/sheetfusion\/assets\/banner-772x250.png?rev=3494129","banner_2x":"https:\/\/ps.w.org\/sheetfusion\/assets\/banner-1544x500.png?rev=3494129","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sheetfusion\/assets\/icon-128x128.png?rev=3494129","icon_2x":"https:\/\/ps.w.org\/sheetfusion\/assets\/icon-256x256.png?rev=3494129","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>SheetFusion turns public Google Sheets into modern WordPress tables without API keys, OAuth, visitor tracking, or telemetry.<\/p>\n\n<p>Version 2.3.3 adds a saved table dropdown to the SheetFusion block and includes the WordPress 7.0 and Plugin Check compatibility updates.<\/p>\n\n<p><strong>Highlights<\/strong><\/p>\n\n<ul>\n<li>Saved table builder with per-table settings<\/li>\n<li>Admin-only visualizer for colors, themes, density, and responsive behavior<\/li>\n<li>Gutenberg block and shortcode support<\/li>\n<li>Backward-compatible direct sheet embeds<\/li>\n<li>Search, sorting, pagination, result info, row menu, and CSV\/Excel\/PDF\/Print export buttons<\/li>\n<li>Responsive modes: horizontal scroll, stacked rows, and mobile cards<\/li>\n<li>Safe HTML columns for limited, sanitized links and inline markup<\/li>\n<li>Optional sticky header and max-height table scrolling<\/li>\n<li>Server-side row filtering by column<\/li>\n<li>No row-count paywall; only a configurable safety cap to protect server memory<\/li>\n<li>No telemetry and no external frontend CDN requests<\/li>\n<\/ul>\n\n<p><strong>How it works<\/strong><\/p>\n\n<p>SheetFusion fetches CSV data from Google's public export endpoint. Your sheet must be published to the web. Private sheets are not supported because SheetFusion intentionally avoids API keys and OAuth.<\/p>\n\n<p><strong>External Services<\/strong><\/p>\n\n<p>This plugin connects to:<\/p>\n\n<ul>\n<li><strong>Google Sheets<\/strong> (<code>docs.google.com<\/code>) - your WordPress server fetches public CSV data for the Sheet ID and tab name you provide.<\/li>\n<\/ul>\n\n<p>SheetFusion does not collect, store, or transmit personal visitor data to SheetFusion servers. Visitors' browsers do not request bundled table libraries from external CDNs.<\/p>\n\n<p><strong>Bundled Libraries<\/strong><\/p>\n\n<p>The following libraries are bundled locally:<\/p>\n\n<ul>\n<li>DataTables 1.13.8 - MIT<\/li>\n<li>DataTables Buttons 2.4.2 - MIT<\/li>\n<li>JSZip 3.10.1 - MIT<\/li>\n<\/ul>\n\n<h3>Shortcode Reference<\/h3>\n\n<p>Saved table mode:<\/p>\n\n<pre><code>[sheetfusion table=\"123\"]\n<\/code><\/pre>\n\n<p>Saved table mode uses saved settings only. The optional <code>class<\/code> attribute adds a wrapper class:<\/p>\n\n<pre><code>[sheetfusion table=\"123\" class=\"financial-table-wrapper\"]\n<\/code><\/pre>\n\n<p>Direct shortcode mode:<\/p>\n\n<pre><code>[sheetfusion id=\"SHEET_ID\" sheet=\"Sheet1\"]\n<\/code><\/pre>\n\n<p>Direct shortcode attributes:<\/p>\n\n<ul>\n<li><code>theme<\/code> - clean, stripe, minimal, dark, editorial, compact<\/li>\n<li><code>density<\/code> - comfortable, compact, spacious<\/li>\n<li><code>responsive<\/code> - scroll, stack, cards<\/li>\n<li><code>page_length<\/code> - rows per page<\/li>\n<li><code>order_column<\/code> - 1-based default sort column<\/li>\n<li><code>order_dir<\/code> - asc or desc<\/li>\n<li><code>search<\/code>, <code>pagination<\/code>, <code>info<\/code>, <code>length_menu<\/code> - true or false<\/li>\n<li><code>filter_column<\/code>, <code>filter_value<\/code>, <code>filter_mode<\/code> - server-side row filtering<\/li>\n<li><code>export<\/code> - csv, excel, pdf, print. PDF opens a browser print\/save-to-PDF view without bundling a large PDF library.<\/li>\n<li><code>height<\/code> - optional max height in pixels<\/li>\n<li><code>sticky_header<\/code> - true or false<\/li>\n<li><code>max_rows<\/code> - direct mode parse cap<\/li>\n<\/ul>\n\n<p>For security, direct shortcodes escape cell HTML by default. To render links such as <code>&lt;a href=\"\/company\/example\/\"&gt;Example&lt;\/a&gt;<\/code>, create a saved table and set that column type to Safe HTML.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate SheetFusion.<\/li>\n<li>Publish your Google Sheet to the web: File &gt; Share &gt; Publish to the web.<\/li>\n<li>Use a direct shortcode with your Sheet ID and tab name, or go to SheetFusion &gt; Table Setup to create a saved table.<\/li>\n<li>Customize the visual theme and controls when using a saved table.<\/li>\n<li>Copy the saved-table shortcode or insert the SheetFusion Table block.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20sheetfusion%20require%20an%20api%20key%3F\"><h3>Does SheetFusion require an API key?<\/h3><\/dt>\n<dd><p>No. It uses the public CSV export endpoint for sheets published to the web.<\/p><\/dd>\n<dt id=\"does%20sheetfusion%20support%20private%20sheets%3F\"><h3>Does SheetFusion support private sheets?<\/h3><\/dt>\n<dd><p>No. Private sheets require OAuth or API credentials, which SheetFusion intentionally avoids.<\/p><\/dd>\n<dt id=\"does%20sheetfusion%20limit%20rows%20like%20a%20freemium%20plugin%3F\"><h3>Does SheetFusion limit rows like a freemium plugin?<\/h3><\/dt>\n<dd><p>No. There is no row-count paywall. There is a configurable safety cap to protect site memory and browser performance on very large sheets.<\/p><\/dd>\n<dt id=\"can%20i%20still%20use%20my%20old%20shortcodes%3F\"><h3>Can I still use my old shortcodes?<\/h3><\/dt>\n<dd><p>Yes. Existing shortcodes such as <code>[sheetfusion id=\"SHEET_ID\" sheet=\"Sheet1\"]<\/code> continue to work.<\/p><\/dd>\n<dt id=\"what%20is%20the%20recommended%20saved-table%20shortcode%3F\"><h3>What is the recommended saved-table shortcode?<\/h3><\/dt>\n<dd><p>Use a saved table when you want reusable settings, synced rows, the block, or the visual builder: <code>[sheetfusion table=\"123\"]<\/code>. Saved table settings come from SheetFusion &gt; Table Setup and are not overridden by shortcode or block display defaults.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20colors%3F\"><h3>Can I customize colors?<\/h3><\/dt>\n<dd><p>Yes. WordPress administrators can use the table visualizer to choose presets and custom colors for each saved table.<\/p><\/dd>\n<dt id=\"does%20sheetfusion%20collect%20telemetry%3F\"><h3>Does SheetFusion collect telemetry?<\/h3><\/dt>\n<dd><p>No. SheetFusion does not include Appsero-style telemetry or phone-home tracking.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.3.3 - 2026-05-21<\/h4>\n\n<ul>\n<li>Replaced the SheetFusion block saved table ID field with a saved table dropdown using unique table names.<\/li>\n<\/ul>\n\n<h4>2.3.2 - 2026-05-21<\/h4>\n\n<ul>\n<li>Confirmed compatibility metadata for WordPress 7.0 and PHP 7.4+.<\/li>\n<li>Resolved Plugin Check translator comment, prepared SQL, and prefixed variable findings.<\/li>\n<li>Improved saved table setting persistence, safe cell rendering, filters, sorting, sticky headers, sync history, and builder controls.<\/li>\n<\/ul>\n\n<h4>2.3.1 - 2026-05-11<\/h4>\n\n<ul>\n<li>Cleaned up the Table Setup Columns UI with clearer labels, table-style editing, and inline advanced controls.<\/li>\n<li>Replaced duplicate filter setup with column-level filter type controls.<\/li>\n<li>Added a Data Sample section for raw synced values and a separate Table Preview using the saved shortcode rendering path.<\/li>\n<li>Improved frontend filter rendering for text, dropdown, number range, date range, and yes\/no filters.<\/li>\n<li>Preserved existing saved column schema keys while deriving filter enabled state from <code>filter_type<\/code>.<\/li>\n<\/ul>\n\n<h4>2.3.0 - 2026-05-10<\/h4>\n\n<ul>\n<li>Added server-side row, column, and sync-log tables.<\/li>\n<li>Added robust CSV parsing for quoted multiline cells.<\/li>\n<li>Added saved-table REST rendering with pagination, search, filters, and sorting.<\/li>\n<li>Added background sync, sync logs, and REST admin actions.<\/li>\n<li>Replaced global frontend asset loading with conditional shortcode\/block loading.<\/li>\n<li>Added a modern builder for source, preview, columns, filters, formatting, layout, style, publish, and sync status.<\/li>\n<\/ul>\n\n<h4>2.2.0 - 2026-05-07<\/h4>\n\n<ul>\n<li>Added database-backed saved tables.<\/li>\n<li>Added admin table builder with visual theme customizer and preview.<\/li>\n<li>Added saved-table shortcode format: <code>[sheetfusion table=\"123\"]<\/code>.<\/li>\n<li>Preserved existing direct Sheet ID shortcodes.<\/li>\n<li>Added six themes, custom colors, density controls, responsive modes, cache controls, and local vendor assets.<\/li>\n<li>Added image columns, improved link columns, sticky header, max-height scrolling, and async loading.<\/li>\n<li>Added CSV, Excel, PDF, and print export controls.<\/li>\n<li>Rewrote readme and help content for accuracy.<\/li>\n<\/ul>\n\n<h4>2.1.2 - 2026-04-27<\/h4>\n\n<ul>\n<li>Switched Google Sheets fetch from the Visualization API endpoint to the plain CSV export endpoint.<\/li>\n<\/ul>","raw_excerpt":"Create responsive WordPress tables from public Google Sheets with saved settings, visual themes, shortcodes, and a block.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/289553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=289553"}],"author":[{"embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/isomite"}],"wp:attachment":[{"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=289553"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=289553"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=289553"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=289553"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=289553"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bel.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=289553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}