首页 > 解决方案 > 上传时自动格式化 Google 表格

问题描述

我有一个 Excel 文件,我上传并每周自动转换为谷歌表格。该文件始终是相同的布局,只是日期不同,我希望每次上传时都自动以相同的方式格式化。我可以轻松地创建一个宏,但是该宏仅适用于当前工作表。我希望宏能够处理我上传到此文件夹的所有文件。这可能吗?我尝试将脚本发布到 Web 应用程序和附加组件,但它们不起作用。

谢谢。下面是脚本:

/** @OnlyCurrentDoc */

function ScheduleFormat() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().setFontSize(11);
  spreadsheet.getActiveSheet().setFrozenColumns(0);
  spreadsheet.getRange('1:1').activate();
  spreadsheet.getActiveRangeList().setFontSize(12);
  sheet = spreadsheet.getActiveSheet();
  sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().setFontColor(null);
  spreadsheet.getRange('B:C').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('C1'));
  spreadsheet.getActiveSheet().deleteColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());
  spreadsheet.getRange('C2').activate();
  spreadsheet.getActiveSheet().setColumnWidth(2, 89);
  spreadsheet.getActiveSheet().setColumnWidth(2, 103);
  spreadsheet.getRange('C2:I22').activate();
  spreadsheet.getActiveRangeList().setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID);
  spreadsheet.getRange('23:24').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('A24'));
  spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
  spreadsheet.getRange('17:17').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('10:10').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRangeList(['10:10', '18:18']).activate()
  .clearFormat();
  spreadsheet.getActiveSheet().setRowHeight(10, 13);
  spreadsheet.getActiveSheet().setRowHeight(18, 13);
  spreadsheet.getRange('G6').activate();
};

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-macros

解决方案


推荐阅读