2014-04-19 50 views
5

範圍服務錯誤:在谷歌電子表格的腳本

我開始寫劇本的,這將使一個API(用JSON響應)鏈式調用並將結果寫入到電子表格中。

會發生什麼:

一旦我調試腳本代碼,它運行得很好,沒有什麼大問題,但一旦我從電子表格按鈕本身(從我創建的菜單)中運行它,它運行的一些腳本的步驟和比,彈出一個:Service Error: Spreadsheet沒有其他錯誤的細節。

怪誕

我開始「登陸」的過程中,以電子表格單元格當前步驟,這樣我可以運行該腳本進行調試,同時監測其進展情況。

的問題是,有一次我還可以將一些「隨機」的作品,如:

sheet.getRange("F2").setValue(currentPage); 

的代碼往往在不同的點突破。

代碼示例:

你可以找到一個代碼重現此問題:http://pastebin.com/HjmSwEYZ

所有你需要做的是:

1 - 對谷歌驅動

創建一個新的電子表格

2 - 點擊工具 - >腳本編輯器

3 - 創建一個新的腳本,粘貼代碼,並保存

4 - 刷新電子表格(F5),以便自定義菜單將會出現「激戰2追蹤器」

5 - 點擊按鈕,然後點擊「全部」

所需的輸出:

這段代碼應該(如果不是因爲這個錯誤)做的是:

1 - 執行的請求在這個網址:http://www.gw2spidy.com/api/v0.9/json/items/all/1(這將返回激戰的第一頁2個itens)

2 - 迭代在每個網頁,解析JSON和寫入返回值到電子表格

免責聲明:

對不起,關於表格中的所有「日誌」消息。這是追蹤我的進步的絕望嘗試,我知道我不應該這樣做。

在此先感謝

更新1:

創建另一個電子表格粘貼在自己的腳本項目的引擎收錄代碼我可以運行它在互動之後,但僅此而已。這一次,它提出了一個不同的錯誤:We're sorry, a server error occurred. Please wait a bit and try again.

+0

類似的問題:http://stackoverflow.com/questions/30129676/what-does-service-error-spreadsheets-mean – iAmOren

回答

1

Marchello,今天我遇到了同樣的問題,剛剛找到了答案在這裏得到它:https://code.google.com/p/google-apps-script-issues/issues/detail?id=3815(見#4)。這個想法是將行添加到工作表的底部,讓腳本再次開始工作。它在我的情況下工作。

+0

謝謝,但這樣的工作,因爲只有一個解決方法。 我最終發現真正的問題是由調用InsertImage方法引起的,但問題最終在flush調用上「爆炸」,不知道爲什麼。 –

+0

它適用於我的情況。一個需要'監視'可用[編號,白化]行來操作。但錯誤是太棒了,我們已經踏上了serverside javascript ... –

0

在我的情況下,我有'動態'範圍的公式,即=sum(b2:b),我記得這是在新的谷歌電子表格中提到的一個問題。

修正至sum(b2:b22)(確保範圍不超過表的最後一行)解決了這個問題。

0

在我來說,我得到這個錯誤,因爲我是問其他電子表格只有19電子表格上的時候有它的數據與一系列25列進行排序。

在我的智慧中,我想通過在編寫腳本來排序25列而不是使用getLastColumn之後刪除不需要的列來整理電子表格 - 不要問我爲什麼。

2

我喜歡ellockie說 - 我是一個(不知不覺)有同樣的問題。我試圖range.sort(8),但收集的範圍內,我用:

sheet.getRange(2,1,sheet.getMaxRows(), sheet.getMaxColumns()); 

但我應該已經使用了:

sheet.getRange(2, 1, sheet.getMaxRows()-1, sheet.getMaxColumns()); 

錯誤消息,作爲2015年5月1日,仍然是非常神祕的,並沒有提供比「服務錯誤:電子表格」更多的細節。

0

我有同樣的問題的原因如上所述ellockie:動態範圍的公式英寸在我的情況下,我使用=INDEX(B7:B,1)來獲取列標題後的第一個單元格,即單元格B7。我正在使用這個,因爲我使用sript來插入一個新的單元格,將所有的實際數據向下移動,所以無論我移動單元格,我都需要獲取其他單元格中的第一行值。我將其更改爲=INDIRECT(CONCATENATE(CHARACTER(COLUMN()+64);ROW()+4))以引用它動態

  • CHARACTER(COLUMN()+64)給出列字母。更換=INDEX(B7:B,1)意味着B
  • ROW()+4給我行號我想,4行下我把這個配方。更換=INDEX(B7:B,1)意味着7
相關問題