如何修改Google Apps Script实现按链接列表批量修改表格格式?
整合后的Google Apps Script脚本
以下是完成整合的脚本,它会读取指定工作表中的Google Sheets链接列表,对每个链接对应的表格执行格式修改:
function Removed_spaces() { // 获取存储链接列表的工作表 const sheetName = "111"; const linkSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); if (!linkSheet) { Logger.log(`未找到名为"${sheetName}"的工作表。`); return; } // 从A列提取有效的Google Sheets文件ID const fileIds = linkSheet.getRange("A1:A" + linkSheet.getLastRow()).getValues().reduce((idList, [cellValue]) => { if (typeof cellValue === 'string' && /^https:\/\/docs.google.com\/spreadsheets\/d/.test(cellValue)) { const id = cellValue.split("/")[5]; if (id) idList.push(id); } return idList; }, []); if (fileIds.length === 0) { Logger.log("A列中未找到有效的Google Sheets链接。"); return; } // 逐个处理每个表格 fileIds.forEach(fileId => { try { const targetSpreadsheet = SpreadsheetApp.openById(fileId); const sheets = targetSpreadsheet.getSheets(); // 处理前3个工作表(若表格不足3个则处理全部) for (let i = 0; i < Math.min(3, sheets.length); i++) { const sheet = sheets[i]; const lastRow = sheet.getLastRow(); if (lastRow === 0) continue; // 跳过空表 const range = sheet.getRange(`A1:X${lastRow}`); range.setNumberFormat("@"); Logger.log(`已格式化表格"${targetSpreadsheet.getName()}"中的工作表"${sheet.getName()}"`); } } catch (error) { Logger.log(`处理文件ID ${fileId} 失败:${error.message}`); } }); Logger.log("格式修改流程已完成。"); }
关键说明
- 链接列表要求:确保名为
111的工作表中,A列包含完整的Google Sheets链接(格式如https://docs.google.com/spreadsheets/d/文件ID/...) - 处理范围:对每个目标表格的前3个工作表(若表格不足3个则处理所有存在的工作表),将A1到X列(直至最后一行)的单元格格式设置为文本格式(
@) - 错误处理:如果某个表格无法打开(如权限不足、ID无效),脚本会记录错误并继续处理下一个表格
- 日志查看:执行后可在Apps Script编辑器的「日志」中查看处理进度和错误信息
内容的提问来源于stack exchange,提问作者Yuriy Priputen
相关产品推荐
相关产品推荐

