You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Google Sheets脚本将指定工作表各列导出为对应命名的jsx文件

Google Sheets 列导出为JSX文件脚本实现

以下是可直接使用的完整实现方案,无需依赖第三方工具:

操作步骤

  • 打开你的目标Google Sheets表格,点击顶部菜单栏「扩展程序」>「Apps Script」进入脚本编辑器
  • 清空编辑器内默认生成的示例代码,粘贴下文的完整脚本代码
  • 点击编辑器顶部的保存按钮,为项目自定义命名(如「JSX导出工具」),根据页面提示完成谷歌账号授权(首次运行会触发未验证提示,点击「高级」>「继续访问[你的项目名]」即可,脚本为本地运行无安全风险)
  • 回到Google Sheets页面刷新,等待几秒后顶部菜单栏会出现新的「导出JSX文件」选项,点击下属的「导出所有列」即可运行
  • 运行后会弹出下载对话框,点击下载按钮后浏览器会自动下载包含所有JSX文件的ZIP压缩包,你可自行选择本地保存路径,解压后即可得到所有.jsx文件

完整脚本代码

// 自定义菜单,刷新表格后自动显示
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('导出JSX文件')
    .addItem('导出所有列', 'exportColumnsToJSX')
    .addToUi();
}

// 核心导出逻辑
function exportColumnsToJSX() {
  const SHEET_NAME = "Text_Files";
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
  if (!sheet) {
    SpreadsheetApp.getUi().alert(`找不到名为${SHEET_NAME}的工作表,请检查工作表名称是否正确`);
    return;
  }

  const allData = sheet.getDataRange().getValues();
  if (allData.length < 2) {
    SpreadsheetApp.getUi().alert("工作表内无有效数据,至少需要表头行和一行内容");
    return;
  }

  const totalColumns = allData[0].length;
  const fileBlobs = [];
  // 非法文件名字符替换规则
  const invalidCharsRegex = /[\/\\:*?"<>|]/g;

  // 遍历每一列处理
  for (let colIndex = 0; colIndex < totalColumns; colIndex++) {
    const fileName = allData[0][colIndex].toString().replace(invalidCharsRegex, "_");
    if (!fileName.trim()) continue; // 跳过空表头的列

    // 拼接该列第二行开始的所有内容
    let fileContent = "";
    for (let rowIndex = 1; rowIndex < allData.length; rowIndex++) {
      const cellContent = allData[rowIndex][colIndex]?.toString() || "";
      fileContent += cellContent + "\n";
    }

    // 跳过无内容的列
    if (fileContent.trim() === "") continue;

    // 生成JSX文件blob
    const blob = Utilities.newBlob(fileContent, "text/plain", `${fileName}.jsx`);
    fileBlobs.push(blob);
  }

  if (fileBlobs.length === 0) {
    SpreadsheetApp.getUi().alert("没有可导出的有效内容");
    return;
  }

  // 打包为ZIP文件
  const zipBlob = Utilities.zip(fileBlobs, "JSX文件导出包.zip");
  const zipBase64 = Utilities.base64Encode(zipBlob.getBytes());

  // 弹出下载对话框
  const html = HtmlService.createHtmlOutput(`
    <html>
      <body style="padding: 20px; font-family: sans-serif;">
        <p>所有JSX文件已打包完成,点击下方按钮下载:</p>
        <button onclick="downloadZip()" style="padding: 8px 16px; background: #4285f4; color: white; border: none; border-radius: 4px; cursor: pointer;">
          下载ZIP压缩包
        </button>
        <script>
          function downloadZip() {
            const zipContent = "data:application/zip;base64,${zipBase64}";
            const link = document.createElement('a');
            link.href = zipContent;
            link.download = "JSX文件导出包.zip";
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
            google.script.host.close();
          }
        </script>
      </body>
    </html>
  `).setWidth(350).setHeight(150);
  SpreadsheetApp.getUi().showModalDialog(html, "导出完成");
}

注意事项

  • 请确保工作表名称完全为Text_Files,大小写、符号需完全匹配,否则脚本无法识别
  • 脚本会自动过滤空表头、无内容的列,不会生成无效文件
  • 表头中的非法文件名字符(/ \ : * ? " < > |)会自动替换为下划线,避免导出失败

内容的提问来源于stack exchange,提问作者Víctor Enrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:24:00