我希望每5分钟将信息从源表复制到目标表,如本例所示
https://productforums.google.com/forum/#!topic/docs/s0cFHaIvWV0;context-place=forum/docs
如果复制普通值,它工作正常。问题是,如果源表中的信息是公式,它将复制公式而不是单元格中的值。
我应该如何修改我的脚本?
function createTimeDrivenTrigger() {
ScriptApp.newTrigger('myFunction')
.timeBased()
.everyMinutes(5)
.create()
}
function myFunction() {
var ss = SpreadsheetApp.getActive(),
sheet2 = ss.getSheetByName("Sheet 2"), //target sheet
sheet1 = ss.getSheetByName("Sheet 1"), //source sheet
startRow = PropertiesService.getScriptProperties()
.getProperty('start') || 1;
try {
sheet1.getRange(startRow, 1, 4, sheet1.getLastColumn())
.copyTo(sheet2.getRange(sheet2.getLastRow() + 1 || 1, 1));
PropertiesService.getScriptProperties()
.setProperty('start', parseInt(startRow) + 4);
} catch (e) {
PropertiesService.getScriptProperties()
.deleteProperty('start');
ScriptApp.getProjectTriggers().forEach(function (t) {
ScriptApp.deleteTrigger(t);
});
}
}
答案 0 :(得分:0)
在要复制的范围内使用.getValues()
文档here
<强> 修改 强>
以下是如何使用getRange()
函数的示例。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("B2:D4");
在您的示例中,您有sheet1 = ss.getSheetByName("Sheet 1")
作为您希望数据来源的来源。
因此,如果您希望从Sheet 1
获取特定范围的值,则可以在getRange()
变量上使用sheet1
方法。
E.g。您想要获取单元格A1,B1,C1和D1中的值范围,您可以将getRange()
方法添加到sheet1
,如下所示:
sheet1.getValues("A1:D1")
我希望这能清楚地解释清楚。