我正在制作一张能够将数据从一张纸转移到另一张纸上的纸张。我已经操纵了我发现的另一个脚本并且它工作得很好。直到我需要将一些单元格作为值,而某些单元格作为公式。
我需要Col A-Col D作为" getValues" 我需要Col E-Col Q作为" getFormulas"
以下是正在运作的公式:
function Copy(){
var origSheetObject = SpreadsheetApp.openById('Key1').getSheetByName('Daily Log');
var destSheetObject = SpreadsheetApp.openById('Key2').getSheetByName('Imported Data');
var origLastCol = origSheetObject.getLastColumn();
var arrOrigData = origSheetObject.getRange (6, 1, 1, 17).getFormulas();
var destlastRow = destSheetObject.getLastRow()+1;
var cont;
for (cont = 0; cont <origLastCol; cont++)
destSheetObject.getRange(destlastRow, 1+cont).setValue(arrOrigData[0][cont]);
我知道如果我要将getFormula更改为getValue,我只得到值而不是我需要看到的公式。这是我尝试过的,但不正确:
function Copy(){
var origSheetObject = SpreadsheetApp.openById('Key1').getSheetByName('Daily Log');
var destSheetObject = SpreadsheetApp.openById('Key2').getSheetByName('Imported Data');
var origLastCol = origSheetObject.getLastColumn();
var arrOrigData = origSheetObject.getRange (6, 1, 1, 4).getValues();
origSheetObject.getRange (6, 5, 1, 13).getFormulas();
var destlastRow = destSheetObject.getLastRow()+1;
var cont;
for (cont = 0; cont <origLastCol; cont++)
destSheetObject.getRange(destlastRow, 1+cont).setValue(arrOrigData[0][cont]);
我不知道如何让它让我沿着同一行拉取值和公式。任何建议都很棒!
答案 0 :(得分:0)
获取不同变量中的值和公式,然后通过公式变量进行迭代,如果有公式,则将该公式保存到原始变量中,如下所示:
var arrOrigData = origSheetObject.getRange(1, 1, 1, 17).getValues();
var arrOrigForm = origSheetObject.getRange(1, 1, 1, 17).getFormulas();
for( lin in arrOrigForm )
for( col in arrOrigForm[ lin ] )
if( arrOrigForm[ lin ][ col ] != "" )
arrOrigData [ lin ][ col ] = arrOrigForm[ lin ][ col ];
您可以将其保存为新功能,如此
function getValuesAndFormulas( A1Range ){
var arrOrigData = origSheetObject.getRange( A1Range ).getValues();
var arrOrigForm = origSheetObject.getRange( A1Range ).getFormulas();
for( lin in arrOrigForm )
for( col in arrOrigForm[ lin ] )
if( arrOrigForm[ lin ][ col ] != "" )
arrOrigData [ lin ][ col ] = arrOrigForm[ lin ][ col ];
return arrOrigData;
}
只有这样才能使它成为一个人。
答案 1 :(得分:0)
function Copy(){
var origSheetObject = SpreadsheetApp.openById('Key1').getSheetByName('Daily Log');
var destSheetObject = SpreadsheetApp.openById('Key2').getSheetByName('Imported Data');
var origLastCol = origSheetObject.getLastColumn();
var arrOrigData = origSheetObject.getRange(1, 1, 1, 17).getValues();
var arrOrigForm = origSheetObject.getRange(1, 1, 1, 17).getFormulas();
for( lin in arrOrigForm )
for( col in arrOrigForm[ i ] )
if( arrOrigForm[ lin ][ col ] != "" )
arrOrigData [ lin ][ col ] = arrOrigForm[ lin ][ col ];
var destlastRow = destSheetObject.getLastRow()+1;
var cont;
for (cont = 0; cont <origLastCol; cont++)
destSheetObject.getRange(destlastRow, 1+cont).setValue(arrOrigData[0][cont]);
}
这就是我根据你的信息把goether放的东西。我非常愿意意识到我没有做到这一点。如果您可以编辑此代码并向我展示它看起来应该完成的内容,那么我应该能够解决我的错误,并了解我现在无法做到的事情。再次感谢您帮助我。