2016-11-16 46 views
1

我有一個谷歌表,從外部來源收到電話號碼列表。電話號碼以兩種格式之一到達:谷歌腳本 - 查找和替換使用「在公式內搜索」

  1. 顯示爲12345678901的數字沒有錯誤地出現。
  2. 數字顯示爲1(234)567-8901導致#ERROR!

看來,谷歌牀單正在讀取作爲公式的第二組數字。當我點擊一個錯誤單元格時,電話號碼前面加上「= +」,如「= + 1(234)567-8901」。我可以通過使用「查找並替換」選中「在公式內搜索」手動修復整個文檔。

查找: 「= +」
替換: 「」

Find/Replace "Search Within Formulas"

有什麼辦法在谷歌Apps腳本自動執行此?我想運行這個功能onEdit(),這樣#ERROR!電話號碼是實時修復的。

回答

0

可以刪除() - 使用電子表格公式的人物,讓我們說數字是在單元格A1,然後在另一個單元格可以放:

=CONCATENATE(SPLIT(A1, "()-")) 

這將刪除() - 字符。

如果你想用一個腳本來做到這一點,那麼你可以使用替換刪除() -

.replace(/[()-]/gi, "") 

應用上面的數列範圍,以適當的格式編號。

編輯

這應該工作,變「A1:A」到你列的延遲後

function onEdit(){ 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var range = sheet.getRange("A1:A" + sheet.getLastRow()); 
    var data = range.getValues(); 
    var formulas = range.getFormulas(); 
    for (var i=0;i< formulas.length;i++) { 
    if(typeof formulas[i] !== "undefined" && formulas[i] != ""){ 
     formulas[i][0] = formulas[i][0].replace(/[=()+-]/gi, ""); 
     data[i][0] = formulas[i][0].toString(); 
    } 
    } 
range.setValues(data).setNumberFormat("0"); 
} 
+0

道歉,我沒有很多時間在這方面努力。 我在這裏的語法很掙扎。我試圖將'.replace(/ [() - ]/gi,「」)'應用於單列,以便它替換列D中的所有'#ERROR!'電話號碼。 –

+0

另外,我嘗試過標準查找和替換,它不會改變'#ERROR!'單元格內的任何數據。只有選擇「在公式內搜索」時,纔會影響「#ERROR!」單元格。我不知道是否可以在腳本中執行此操作。 –

+0

是的你是對的。好的,你如何導入數字?在將數字發送到電子表格之前,可能需要進行格式設置。 – utphx