2015-10-27 51 views
0

我的代碼使用起來很好,但是由於幾個星期我有麻煩了。與DriveApp一起使用makeCopy

首先,我定義的mooveFile功能:

function mooveFile(file,folder,source,copyNameFile){ 
var newfile = file.makeCopy(copyNameFile, folder); 
source.removeFile(file); 
Logger.log(source.getFiles().length); 
return newfile.getUrl(); 
} 

然後是IM後調用該函數在我的腳本:

if (statutFile=="Validé") { 
    var fichiersj=folderSource.getFilesByName(libeleFile); 
    while (fichiers.hasNext()) { 
     var fichiersj = fichiers.next();} 
     var urlFichierVal = mooveFilde(fichiersj,folderValid,folderSource,nomFichier); 
      sheetform.getRange(i+1,23).setValue("Deplacé"); 
      if (typeFichier == "DEVIS") { 
      sheetform.getRange(i+1,34).setValue(urlFichierVal);} 
       if (etatLien !="Lien modifiée") { 
       var urlFichierValide = urlFichierVal; 
       var hyp = '"'+urlFichierValide+'"'; 
       var argHyp = ";"; 
       var sepHyp = '"'; 
       var hrefHyp = "=HYPERLINK("+hyp+argHyp+sepHyp+"Accèder au "+typeFichier+" Validé"+'")'; 
       sheetform.getRange(i+1,18).setValue("Lien modifiée"); 
       sheetform.getRange(i+1,6).setValue(hrefHyp); 
       } 
     } 

我得到的錯誤是:

類型錯誤:無法調用未定義的「makeCopy」方法。

在我看來,從來到這個問題:

while (fichiers.hasNext()) { 
var fichiersj = fichiers.next();} 

但是我不知道它是如何成爲不確定。它使用得很好!

回答

1

看起來你在你的代碼的額外},就行了:

var fichiersj = fichiers.next();} 

這是結束了行之後While循環,而不是執行的代碼,你的休息。

一旦while循環完成,「fichiersj」是未定義的,因爲它只在循環中定義。

+0

Thx you Cameron。它現在似乎運作良好! Howerver,我無法解釋爲什麼它會像我解釋的那樣寫作。 – Guilhem