首页 > 解决方案 > RangecopyFormat(仅限)使用谷歌脚本从一个电子表格到另一个电子表格

问题描述

我一直在寻找几天来完成这项工作,但没有成功。我有多个用户使用不同的电子表格,这些电子表格看起来相同,但具有不同的 ID 和安全性。如果我对我的基本工作表进行格式更改,我需要从那里提取新格式并将其分发给所有用户工作表,以便我全面保持一致。

*不想复制值 *不想将工作表复制到“复制工作表”,然后删除并重命名工作表

标签: google-apps-script

解决方案


可能的解决方案:

您可以使用 Sheets API 从一个电子表格获取格式并更新另一个电子表格。

流动:

  • 用于Spreadsheets.get获取源格式
  • 使用updateCellsbatchUpdate 请求更新另一个具有源格式的电子表格

示例脚本:

function copyFormatFromSpreadsheetToSpreadsheet() {
  var sourceSsId = SpreadsheetApp.getActiveSpreadsheet().getId(),
    destSsId = '##destSpreadsheetIdHere##',
    sourceRng = 'Sheet1!A1:B4',
    destRng = {
      //Must be of same dimensions as sourceRng
      //Represents Sheet1!B1:C4
      sheetId: 123456789, //use 9 digit GridId
      startRowIndex: 0,
      endRowIndex: 4, //end exclusive
      startColumnIndex: 1,
      endColumnIndex: 3,
    };

  /*Get Format of Source Spreadsheet*/
  var rowData = Sheets.Spreadsheets.get(sourceSsId, {
    ranges: sourceRng,
    fields: 'sheets.data.rowData.values.userEnteredFormat',
  }).sheets[0].data[0].rowData;

  /*Copy Format to Destination Spreadsheet*/
  var request = {
    requests: [
      {
        updateCells: {
          rows: rowData,
          fields: 'userEnteredFormat',
          range: destRng,
        },
      },
    ],
  };
  Sheets.Spreadsheets.batchUpdate(request, destSsId);
}

参考:


推荐阅读