当单元格为空时粘贴为值(google-apps-script)

时间:2017-01-31 10:05:04

标签: google-apps-script

目前我正在使用以下脚本:

function moveValuesOnly() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var source = ss.getRange('Sheet1!C16:C16');
  source.copyTo(ss.getRange('Sheet2!A1'), {contentsOnly: true});
  source.clear();
}

但是我想在sheet2中附加粘贴的数据,每周生成一次新数据。

因此,每周更新一次sheet1并更改“Sheet1!C16”中的值。我想在'Sheet2!A2'中添加它。等等。

那么如何编辑这个脚本以确保在下一个空单元格中复制新值(所以当'Sheet2!A1'有一个值从'Sheet1!C16'获取新值并将其复制到'Sheet2'时!A2'。当'Sheet2!A1'有值时,将新值从'Sheet1!C16'复制到'Sheet2!A3'

我需要在一年中的所有几周内(为了安全53周)

Thnx提前!

1 个答案:

答案 0 :(得分:0)

这取决于你可以做一些事情。

第一个是最简单的,但有一个条件。如果您每周复制到单元格A1A2A3并继续按下,那么每周,您复制的数据始终最低。因此,例如,如果您希望将数据复制到单元格A3,这意味着任何列中包含任何数据的最后一行是行2。这样你需要做的就是得到这样的范围:ss.getRange(ss.getLastRow() + 1, 1)

另一种方法是使用PropertiesService来存储哪一行是最后一行。在脚本运行时,获取该值

var nextRow = PropertiesService.getScriptProperties().getProperty('property we added before')

然后当你得到目标范围时,你会使用

ss.getRange(nextRow, 1)
PropertiesService.getScriptProperties().setProperty('property we added before', nextRow + 1)

这样每次都可以获得下一行,并在下次运行时更新属性。有了这个,您还需要记住,您可能希望在年后重置计数器。