dingtalk-sheet-scripts
9
总安装量
9
周安装量
#31566
全站排名
安装命令
npx skills add https://github.com/rockyz/dingtalk-sheet-scripts --skill dingtalk-sheet-scripts
Agent 安装分布
gemini-cli
9
github-copilot
9
codex
9
amp
9
kimi-cli
9
cursor
9
Skill 文档
ééè¡¨æ ¼èæ¬å¼å
è¿è¡ç¯å¢
- è¯è¨ï¼JavaScript (ES6+)
- è¿è¡å¨ééè¡¨æ ¼çæ²ç®±ç¯å¢ä¸
- 使ç¨
Output.log()è¾åºæ¥å¿ï¼ä¸æ¯console.logï¼ - æ¯æ
async/awaitåfetchAPI
æ ¸å¿å¯¹è±¡
| 对象 | 说æ | è·åæ¹å¼ |
|---|---|---|
| Workbook | å·¥ä½ç°¿ï¼é¡¶çº§å¯¹è±¡ï¼ | ç´æ¥ä½¿ç¨ |
| Sheet | å·¥ä½è¡¨ | Workbook.getActiveSheet() |
| Range | åå æ ¼åºå | sheet.getRange('A1:B10') |
| Input | ç¨æ·è¾å ¥ï¼å¼æ¥ï¼ | await Input.textAsync() |
| Output | æ¥å¿è¾åº | Output.log() |
å¿«é示ä¾
// åºç¡æ°æ®åå
¥
const sheet = Workbook.getActiveSheet();
sheet.getRange('A1:B2').setValues([
['å§å', 'åæ°'],
['å¼ ä¸', 95]
]);
// 弿¥ç¨æ·è¾å
¥
const name = await Input.textAsync('请è¾å
¥å§åï¼');
Output.log(`ä½ å¥½ï¼${name}`);
// ç½ç»è¯·æ±
const response = await fetch('https://api.example.com/data');
const data = await response.json();
å ³é®è§è
弿¥ç¼ç¨
ææå¼æ¥æä½å¿
é¡»ä½¿ç¨ async/awaitï¼
// æ£ç¡®
async function process() {
const input = await Input.textAsync('è¾å
¥ï¼');
const response = await fetch(url);
const data = await response.json();
}
await process();
// é误ï¼ç¼ºå° async/await
function process() {
const input = Input.textAsync('è¾å
¥ï¼'); // é误
}
process(); // é误
æ°æ®æ´æ°çç¥
é¿å å ¨éååï¼åªæ´æ°åæ´é¨åï¼
// æ£ç¡®ï¼åªæ´æ°éè¦ä¿®æ¹çè¡
const values = sheet.getRange('A2:D100').getValues();
for (let i = 0; i < values.length; i++) {
if (values[i][2] === 'å¾
å¤ç') {
sheet.getRange(i + 1, 2, 1, 1).setValues([['å·²å¤ç']]);
}
}
// é误ï¼è¯»åæ´è¡¨åå
¨éåå
const allValues = sheet.getRange('A1:D100').getValues();
allValues[5][2] = 'å·²å¤ç';
sheet.getRange('A1:D100').setValues(allValues); // é¿å
è¿æ ·å
getRange åæ°
- A1 表示æ³ï¼
sheet.getRange('A1:B10') - æ°åç´¢å¼ï¼
sheet.getRange(row, col, rowCount, colCount)– è¡åä» 0 å¼å§
sheet.getRange(0, 0, 1, 1) // A1
sheet.getRange(0, 0, 10, 2) // A1:B10
sheet.getRange(1, 0, 5, 3) // A2:C6
é误å¤ç
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
const data = await response.json();
} catch (error) {
Output.error(`失败ï¼${error.message}`);
}
å¸¸ç¨æ¨¡å¼
è®¾ç½®è¡¨å¤´æ ·å¼
const header = sheet.getRange('A1:D1');
header.setValues([['ID', 'åç§°', 'ç¶æ', 'éé¢']]);
header.setFontWeight('bold');
header.setBackgroundColor('#4285F4');
header.setFontColor('#FFFFFF');
æ¡ä»¶æ ¼å¼
for (let i = 0; i < values.length; i++) {
const cell = sheet.getRange(i + 1, 2, 1, 1);
const score = values[i][2];
if (score >= 90) cell.setBackgroundColor('#C8E6C9');
else if (score >= 60) cell.setBackgroundColor('#FFF9C4');
else cell.setBackgroundColor('#FFCDD2');
}
ç¨æ·éæ©æä½
const action = await Input.selectAsync('éæ©æä½ï¼', [
{ text: '导å
¥æ°æ®', value: 'import' },
{ text: 'å¯¼åºæ°æ®', value: 'export' },
{ text: 'çææ¥è¡¨', value: 'report' }
]);
if (action === 'import') { /* ... */ }
æä»¶å¯¼å ¥
const files = await Input.filesAsync('ä¸ä¼ CSV', {
multiple: false,
fileType: '.csv'
});
if (files && files.length > 0) {
const content = await files[0].text();
const rows = content.split('\n').map(row => row.split(','));
sheet.getRange(0, 0, rows.length, rows[0].length).setValues(rows);
}
API åè
è¯¦ç» API ææ¡£ä½äº docs/api/ ç®å½ï¼
| API | 说æ | ææ¡£ |
|---|---|---|
| Workbook | å·¥ä½ç°¿ | docs/api/Workbook.md |
| Sheet | å·¥ä½è¡¨ | docs/api/Sheet.md |
| Range | åå æ ¼åºå | docs/api/Range.md |
| RangeList | å¤éåº | docs/api/RangeList.md |
| Input | ç¨æ·è¾å ¥ | docs/api/Input.md |
| Output | è¾åºæ¥å¿ | docs/api/Output.md |
| Filter | çé | docs/api/Filter.md |
示ä¾ä»£ç
æ¥ç examples/ ç®å½è·åæ´å¤ç¤ºä¾ï¼
- examples/fetch-demo.js – ç½ç»è¯·æ±ç¤ºä¾ï¼GET/POSTãæ¹é请æ±ãé误å¤çï¼
æ´æ° API ææ¡£
ä½¿ç¨ scripts/update_api_docs.py ä»éé宿¹ OSS è·åææ°ç API ææ¡£ã
ä¾èµå®è£
pip install markitdown requests
ç¨æ³
# æ´æ°ææ API ææ¡£
python scripts/update_api_docs.py
# æ´æ°æå®ç API ææ¡£
python scripts/update_api_docs.py --api Workbook Sheet Range
# ååºææå¯ç¨ç API
python scripts/update_api_docs.py --list
å¯ç¨ç API å表
- æ ¸å¿å¯¹è±¡: Workbook, Sheet, Range, RangeList
- ç¨æ·äº¤äº: Input, Output
- çéç¸å ³: Filter, FilterCriteria, FilterCriteriaBuilder, FilterCondition
- æ°æ®æ ¼å¼: SetValueOptions, DropdownListOption, BorderType, Color, SearchOptions, SortField
- å ¶ä»: Hyperlink