考虑以下代码:
/**********************************************************************************************
** FUNCTION : CarryToThisWeek **
** PARAM : String lastWeekName, String thisWeekName **
** RETUEN : VOID **
** DESC : Copies the carry row of sheet named lastWeekName to B/F row of sheet named **
** thisWeekName. **
**********************************************************************************************/
function CarryToThisWeek(lastWeekName,thisWeekName){
var spreadSheet=SpreadsheetApp.getActiveSpreadsheet();
var lastSheet=spreadSheet.getSheetByName('Oct_06'); // hard-coded the names for testing
var thisSheet=spreadSheet.getSheetByName('Oct_13');
var sourceData = lastSheet.getRange(38, 4, 1, 7);
Logger.log(sourceData.getValues()); //shows the correct values
var destination = thisSheet.getRange(33, 4, 1, 7);
sourceData.copyTo(destination); //fills with 0 <<<<<
//following loop works fine
/*for(col=4;col<=10;col++){
thisSheet.getRange(33, col).setValue(lastSheet.getRange(38, col).getValue());
}*/
}
我对谷歌应用程序脚本相当新,但我之前在其他地方成功使用过copyTo
方法。
我担心我会遗漏一些非常愚蠢的东西。
有人可以指出我做错了什么吗?
答案 0 :(得分:0)
试试这个:
function CarryToThisWeek(lastWeekName,thisWeekName){
var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();
var lastSheet = spreadSheet.getSheetByName('Oct_06');
var thisSheet = spreadSheet.getSheetByName('Oct_13');
var sourceData = lastSheet.getRange(38, 4, 1, 7).getValues();
thisSheet.getRange(33, 4, 1, 7).setValues(sourceData);
}
答案 1 :(得分:0)
好吧,我知道了。
感谢Vasim提出要点
确实sourceData
是一个公式字段,公式一直在被复制。
将其更改为
sourceData.copyTo(destination,{contentsOnly:true});
它按预期工作。
我认为copyValuesToRange()
也可以。