360 Secure SkillHub
360 安全技能中心

Operate Web Apps Built by Forguncy (aka 活字格)

核心功能:识别活字格网页中SpreadJS表格的fgcname属性,调用JS脚本提取CSV格式数据或列表头。典型场景:需程序化读取活字格网页内表格内容时使用。输入输出:在浏览器上下文执行指定JS脚本,先获取表格fgcname,再提取数据/表头,输出表格名列表、CSV数据或表头数组,需配合browser工具的evaluate操作并传入targetId。

kadbbz
kadbbz
热度 51.62
最近更新 2026-05-11 17:31:25
分类:开发依赖:联网浏览搜索应用场景:数据处理 / 自动化脚本

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add forguncy-web-operator
Metadata
name
forguncy-web-operator
description
Provides functionality to interact with SpreadJS tables in the web applications built by Forguncy (aka 活字格), specifically for extracting table data and column headers. Use this skill when you need to programmatically read content from tables within a Forguncy web page by dynamically identifying the table's "fgcname" attribute.

Forguncy Web Operations (forguncy-web-operator)

This skill allows you to extract data and headers from SpreadJS tables within the web applications built by Forguncy (aka 活字格).

How to use

The following JavaScript snippets can be executed in the browser context using the browser.act tool with kind: "evaluate" to retrieve data from a SpreadJS table.

Dynamically Get Table Name (fgcname)

First, you need to identify the fgcname of the SpreadJS table. You can find this by inspecting the DOM or using a JavaScript snippet like this to find elements with fgc-uielement="listview" and extract their fgcname:

(function() {
    const listViews = document.querySelectorAll('[fgc-uielement="listview"]');
    let fgcNames = [];
    listViews.forEach(lv => {
        if (lv.hasAttribute('fgcname')) {
            fgcNames.push(lv.getAttribute('fgcname'));
        }
    });
    return fgcNames;
})()

Once you have the fgcname (e.g., "表格1"), you can use it in the following functions.

Get Table Data

To get the full table data in CSV format (rows separated by '\r', columns by ','), replace YOUR_TABLE_FGCNAME with the actual fgcname you found:

(function() {
    const tableName = "YOUR_TABLE_FGCNAME"; // Replace with the actual fgcname, e.g., "表格1"
    var sheet = Forguncy.Page.getListView(tableName).getControl().getActiveSheet();
    return sheet.getCsv(0,0,sheet.getRowCount(), sheet.getColumnCount(),"\r",",");
})()

Get Column Headers

To get the column headers, assuming there are 2 header rows (adjust headerRowCount if necessary), replace YOUR_TABLE_FGCNAME with the actual fgcname:

(function() {
    const tableName = "YOUR_TABLE_FGCNAME"; // Replace with the actual fgcname, e.g., "表格1"
    var sheet = Forguncy.Page.getListView(tableName).getControl().getActiveSheet();
    var headerRowCount = sheet.getRowCount(GC.Spread.Sheets.SheetArea.colHeader); 
    var headers = [];
    for (let r = 0; r < headerRowCount; r++) {
        var rowHeaders = [];
        for (let c = 0; c < sheet.getColumnCount(); c++) {
            rowHeaders.push(sheet.getValue(r, c, GC.Spread.Sheets.SheetArea.colHeader));
        }
        headers.push(rowHeaders);
    }
    return headers;
})()

Remember to pass the targetId obtained from a browser.open or browser.snapshot call when executing these scripts.