2014-04-24 46 views
1

我想用goolge文檔編寫一個merg腳本並引用一個單獨的電子表格。爲什麼我的for循環body.replaceText函數在Google Document Script中停止?

我目前被卡住了,它並沒有取代任何內容,並且在i = 0時的forloop停止。

下面是代碼:

function myMerger(body, myArrayOfWords, myArrayOfData){//this function will replace the terms found in myArrayOfWords with 
    Logger.log(' just starter myMerger'); 
    Logger.log('myArrayOfWords.length is '+myArrayOfWords.length); 
    Logger.log('myArrayOfData.length is ' +myArrayOfData.length); 
    for(i=0;i<myArrayOfWords.length;++i){//for loop replaces will run the following code for each string within myArrayOfWords 
    Logger.log('myMerger forloop instance number '+i); 
    Logger.log('replacing '+myArrayOfWords[i]+' with '+myArrayOfData[i]); 
    body.replaceText(myArrayOfWords[i], myArrayOfData[i]); 
    //replaces the string in the document with a value from myArrayOfData 
    } 
} 

記錄器返回以下結果:

[14-04-24 12:07:40:248 PDT]剛剛起動myMerger
[ 14-04-24 12:07:40:248 PDT] myAraryOfWords.length是23
[14-04-24 12:07:40:248 PDT] myArrayOfData.length是23
[14-04-24 12 :07:40:248 PDT] myMerger forloop實例號BER 0
![14-04-24 12:07:40:248 PDT]與12

更換** ** WeekOf然後停止。 我不知道我是否構建了一個糟糕的循環,或者是否有我不知道的錯誤。我不知道如何檢查是什麼打破它。

+0

看起來(*)引起了問題,但我不知道爲什麼。 – VegasFun

回答

1

問題是,replaceText總是理解被替換爲正則表達式模式的字符串,並且*在正則表達式中有特殊含義。您應該使用#或其他沒有特殊含義的字符作爲「分隔符」。

無論如何,如果您不期待正則表達式,那麼逃避所有事情是一種「良好做法」。像這樣:

function escapeRegex(s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } 

function myMerger(body, myArrayOfWords, myArrayOfData){//this function will replace the terms found in myArrayOfWords with 
    Logger.log(' just starter myMerger'); 
    Logger.log('myArrayOfWords.length is '+myArrayOfWords.length); 
    Logger.log('myArrayOfData.length is ' +myArrayOfData.length); 
    for(i=0;i<myArrayOfWords.length;++i){//for loop replaces will run the following code for each string within myArrayOfWords 
    Logger.log('myMerger forloop instance number '+i); 
    Logger.log('replacing '+myArrayOfWords[i]+' with '+myArrayOfData[i]); 
    body.replaceText(escapeRegex(myArrayOfWords[i]), myArrayOfData[i]); 
    //replaces the string in the document with a value from myArrayOfData 
    } 
} 

我從Bobince's answer得到了這個整齊的代碼。

順便說一下,您應該粘貼了運行此代碼時得到的錯誤消息。它會幫助我更快地回答您的問題: Invalid regular expression pattern **!WeekOf!**

+0

運行此代碼時我沒有看到任何錯誤,您是否指的是在終端上方顯示的紅色框? – VegasFun

+0

是的,那是錯誤信息。 –