【问题标题】:Google Apps Script CopyPasteType.PASTE_FORMULA also including valuesGoogle Apps 脚本 CopyPasteType.PASTE_FORMULA 还包括值
【发布时间】:2021-06-09 19:10:15
【问题描述】:

Google 表格示例文件: https://docs.google.com/spreadsheets/d/18xd8sEpm95-sGoawg9gjKfoIqmM0blmuMYooeAPhXPY/edit?usp=sharing

这是我当前的代码:

function onEdit(e) {
  var sh=e.range.getSheet();
  var completionColumn=1;
  var topRow=2;
  var editSheet='Sheet1';
  if(sh.getName()!=editSheet)return;//return if not correct sheet
  if(e.range.columnStart==completionColumn && e.range.rowStart==topRow) {
    sh.insertRowBefore(topRow);
    //sh.getRange('D3').copyTo(sh.getRange('D2'), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
    sh.getRange('3:3').copyTo(sh.getRange('2:2'), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
  }
}

每当编辑当前第 2 行的 A 列时,该脚本都会在第 2 行添加一个新行。 我要添加的脚本的下一个功能是将当前第 2 行中的所有公式复制到新的第 2 行。

当我尝试只复制特定的单元格时,它会成功,因为我只复制带有我当前代码示例中的公式的单元格:

sh.getRange('D3').copyTo(sh.getRange('D2'), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);

但是当我尝试将它用于整行时,即使我使用 PASTE_FORMULA 而不是 PASTE_NORMAL 或其他 CopyPasteTypes,它也会复制值:

sh.getRange('3:3').copyTo(sh.getRange('2:2'), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);

如何防止行中的非公式值复制到新添加的行?

【问题讨论】:

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


    【解决方案1】:

    为确保我们只获取带有公式的单元格,您可以使用getRange(row, column, numRows, numColumns)

    更改您的:

    sh.getRange('3:3').copyTo(sh.getRange('2:2'), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
    

    收件人:

    sh.getRange(3, 4, 1, 2).copyTo(sh.getRange(2, 4, 1, 2), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false);
    

    示例:

    编辑期间:

    修改后:

    参考:

    【讨论】:

      猜你喜欢
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多