2016-09-23 88 views
1

我幾乎沒有使用Google Script的經驗,但我試圖用它來搜索電子表格的一列,並找到字符串「Film Dub」的所有實例(知道可以每個單元只有一個)。TypeError:在對象中找不到函數

下面是我的代碼:

function filmDub() { 
     var sheet = SpreadsheetApp.getActiveSheet(); 
     var data = sheet.getDataRange().getValues(); 
     for (var i = 1; i < 100; i++) { 
     var s = data[i][2].toString(); 
     if (s.includes('Film Dub')) { 
      data[5][13]++; 
     } 
     } 
    } 

不過,我不斷收到錯誤

TypeError: Cannot find function includes in object Let's Make A Date, Film Dub, Three Headed Broadway Star, Film TV Theater Styles, Greatest Hits, World's Worst. (line 6, file "Code")

讓我們做一個日期,電影配音,三頭百老匯明星,電影電視戲劇樣式,最大Hits,World's最差「是data[i][2]的正確內容,因此它可以從電子表格中獲取正確的信息。我已經使用Google腳本編輯器中的調試器來驗證s是一個字符串(這是Stack Overflow的類似問題的解決方案之一),但這並沒有解決我的問題。還有什麼可能是錯的?

+1

'typeof s'返回什麼? – nikjohn

+1

'typeof s'返回字符串' – bookworm144

回答

-1

我不是在谷歌Apps腳本的專家,但我知道它的JavaScript,那麼爲什麼不使用下面的JS方法:

if(s.indexOf('Film Dub') > -1) 
+0

當我這樣做時,我收到以下錯誤:'TypeError:無法從未定義讀取屬性「2」。 (第5行,「代碼」文件)' – bookworm144

+0

當投下時,應該解釋他的行動!如果s確實是一個字符串,那麼s.indexOf()應該工作。由於其他原因,您可能會遇到錯誤。你能分享你的代碼中哪一行是'第5行'嗎? –

2

你應該用一個字符串中使用的indexOf檢查是否存在一個文本塊。

function filmDub() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var data = sheet.getDataRange().getValues(); 
    for (var i = 1; i < 100; i++) { 
    var s = data[i][2].toString(); 
    if (s.indexOf('Film Dub') !== -1) { 
     data[5][13]++; 
    } 
    } 
} 
+0

當我這樣做時,我得到以下錯誤:'TypeError:無法從未定義讀取屬性「2」。 (第5行,「代碼」文件)' – bookworm144

+0

我在應用程序腳本中使用endsWith方法面對這個問題,但令人驚訝的是'indexOf'方法也適用於我的情況。 – sumit

1

進一步檢查後,仔細檢查紙張是如何形成的。這是我形成工作表以使您的代碼正常工作的方式。

  [A]     [B]     [C] 
[1]Let's Make A Date  Film Dub Three  Headed Broadway Star 
     [0]     [1]     [2] 

這裏是你的代碼:

function filmDub() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var data = sheet.getDataRange().getValues(); 
for (var i = 1; i < 10; i++) { 
var s = data[i][2].toString(); 
//Logger.log(s); 
if (s.indexOf("Film Dub")> -1) { 
Logger.log("Horray"); 
} 
} 
} 

下面是結果: enter image description here

希望這有助於!

相關問題