【问题标题】:How do I paste format with google sheets script?如何使用谷歌表格脚本粘贴格式?
【发布时间】:2019-12-06 14:13:05
【问题描述】:

我正在使用以下代码将数据从一个选项卡复制并粘贴到工作表中的另一个选项卡。问题是有几列是 w/l 记录,显示为“9-2”(例如),并且数据被粘贴为值。然后,w/l 记录会以“短日期”格式错误地重新校准。

function copyData() { 

  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Standings - live');
  var rg=sh.getRange("A40:P69");
  var vA=rg.getValues();
  var tsh=ss.getSheetByName('Daily Result');
  var trg=tsh.getRange(tsh.getLastRow()+1,1,30,16);
  trg.setValues(vA);
}

问题是,我需要粘贴值来清除原始粘贴上的单元格中的逻辑/语法。然后如何在相同范围内添加第二步以“粘贴格式”,以将 w/l 记录重置为正确格式?

【问题讨论】:

  • 为了正确了解您的情况,您能否提供用于复制您的问题的示例电子表格,并且您能否包含您期望的输出?当然,请删除您的个人信息。
  • 您是否熟悉copyTo(destination, options),它使脚本能够复制值和/或格式。还有其他选择 - documentation 是一个很好的起点
  • 感谢@tedinoz 回复。我没有使用您的解决方案 - 而是复制了一个包含格式化记录的单元格,然后将该格式粘贴到我的目标选项卡上的目标列中。现在,即使我正在粘贴值,它们也会被转换为首选格式,因为单元格提前保存了该格式。

标签: google-apps-script google-sheets scripting


【解决方案1】:
function testTemplate()
{
  var ss=SpreadsheetApp.getActiveSpreadsheet()
  var template=ss.getSheetByName("Test Sheet")
  var destSheet=ss.getSheetByName("Sheet1")
  var lr=destSheet.getLastRow()
  var lc=destSheet.getLastColumn()
  template.getRange(9,2,3,6).copyTo(destSheet.getRange(2,1,lr,lc), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false)
}

【讨论】:

  • 你能评论一下代码的作用吗?
【解决方案2】:

我在上面的评论中回答了。要粘贴格式,请在采用首选格式时复制单元格,然后将格式粘贴到目标单元格中​​。

粘贴格式(mac):option + command + v

通过提前在目标单元格中​​放置首选格式,我避免了编写脚本格式。

【讨论】:

  • 嗨。我真的很高兴这成功了,你想回答你自己的问题。您需要做的是显示您所做更改的代码。对于以后阅读您的答案的其他人来说,这将非常有价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-20
  • 2021-06-03
  • 2019-04-27
  • 1970-01-01
相关资源
最近更新 更多