表格脚本-将格式复制到选区

时间:2018-12-09 22:54:20

标签: google-apps-script google-sheets

尝试将已知范围的格式复制到活动选择中...

有人可以指出我要去哪里了吗?

function updateformats() {
  var ss = SpreadsheetApp.getActive();
  var source = ss.getSheetByName('DONOTUSE')
  ss.getActiveRange().clearFormat();
  var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();

  source.getRange('G37:K37').copyTo(ss.getRange(selection), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);

};

我希望这是有可能的,只是不能完全正常工作。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

此修改如何?

修改点:

  • getSelection()返回“选择”。
    • 因此在ss.getRange(selection)处发生了错误。
  • 在您的脚本中,可以使用ss处的selection代替SpreadsheetApp.getActiveSpreadsheet()

修改后的脚本:

请进行以下修改,然后尝试再次运行。

从:
var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();
source.getRange('G37:K37').copyTo(ss.getRange(selection), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);

收件人:

var selection = ss.getSelection().getActiveRange()
source.getRange('G37:K37').copyTo(selection, SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);

参考:

如果我误解了您的问题,请告诉我。我想修改它。

答案 1 :(得分:0)

您很亲密:

尝试更改此source.getRange('G37:K37').copyTo(ss.getRange(selection), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);的最后一行

对此: source.getRange('G37:K37').copyTo(selection.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);


这行代码:var selection = SpreadsheetApp.getActiveSpreadsheet().getSelection();可以,因为Sheet类具有getSelection()方法,或者可以是var selection = SpreadsheetApp.getSelection();甚至是var selection = ss.getSelection();。显然,无论部署在哪里,它们都将返回用户对电子表格的选择。