init
This commit is contained in:
52
Code.gs
Normal file
52
Code.gs
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Web App 入口
|
||||
*/
|
||||
function doGet() {
|
||||
return HtmlService.createTemplateFromFile('index')
|
||||
.evaluate()
|
||||
.setTitle('安全列表Plus')
|
||||
.addMetaTag('viewport', 'width=device-width, initial-scale=1')
|
||||
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
|
||||
}
|
||||
|
||||
/**
|
||||
* 一次性获取所有 Sheet 数据,减轻多次请求的负担
|
||||
*/
|
||||
function getAllData() {
|
||||
const ss = SpreadsheetApp.getActiveSpreadsheet();
|
||||
const sheets = ["Main", "CN", "EN", "ES"];
|
||||
const result = {};
|
||||
|
||||
sheets.forEach(name => {
|
||||
const sheet = ss.getSheetByName(name);
|
||||
if (sheet) {
|
||||
result[name.toLowerCase()] = getRowsData(sheet);
|
||||
} else {
|
||||
result[name.toLowerCase()] = [];
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 辅助函数:将 Sheet 转为对象数组
|
||||
*/
|
||||
function getRowsData(sheet) {
|
||||
const data = sheet.getDataRange().getValues();
|
||||
if (data.length < 1) return [];
|
||||
const headers = data[0];
|
||||
const rows = data.slice(1);
|
||||
return rows.map(row => {
|
||||
let obj = {};
|
||||
headers.forEach((header, i) => {
|
||||
// 这里的处理是为了防止日期对象在传输时出错,转为 ISO 字符串
|
||||
let val = row[i];
|
||||
if (val instanceof Date) {
|
||||
val = val.toISOString();
|
||||
}
|
||||
obj[header] = val;
|
||||
});
|
||||
return obj;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user