2012-10-23 145 views
1

如何用在谷歌應用程式腳本兩個(或多個)電子表格(約50張的每個)除以一個谷歌的電子表格(約100張)?將電子表格分成兩個或更多電子表格?

唉,由於谷歌的錯誤(見https://productforums.google.com/d/topic/docs/H2ZakBguOgk/discussion),我無法複製整個電子表格文件並刪除每個電子表格中的一些表格。

我只能在另一個電子表格上一張一張地複印紙張,如果複製成功,則刪除原始紙張。

在此先感謝;)

+0

是菜單選項「文件>製作副本...」不工作呢?看起來(在你粘貼的鏈接上)只有下載不適合你。 –

+0

是這兩種方法都不起作用:「文件>製作副本...」和「文件>下載爲/ Excel」。如果我嘗試從drive.google.com/More/Download/selected item/excel中選擇文件,那也是一樣的。在此先感謝;) – miodf

回答

1

下面是一個代碼段應該做你想要什麼,我沒有測試它,也許你將不得不調整一些細節,但總的想法是有...

編輯:我測試並提出修正,使其工作... 對不起,在第一個版本的錯別字

function splitSS() { 
var oldFileID = 'original ss Id' 
var newFile = DocsList.getFileById(oldFileID).makeCopy() 
var newFileID = newFile.getId() 
var ss = SpreadsheetApp.openById(newFileID); 
Logger.log(ss.getNumSheets()) 
var todel = parseInt((ss.getNumSheets())/2); 
Logger.log(todel) 
var tokeep = ss.getNumSheets()-todel 
Logger.log(tokeep) 
    for (pa=ss.getNumSheets()-1;pa>tokeep;--pa){ 
     ss.setActiveSheet(ss.getSheets()[pa]); 
     var delsheet = ss.deleteActiveSheet(); // delete sheets begining with the last one 
     Utilities.sleep(400); 
    } 
var ssold = SpreadsheetApp.openById(oldFileID); 
    for (pa=todel;pa>1;--pa){ 
     ssold.setActiveSheet(ssold.getSheets()[pa]); 
     var delsheet = ssold.deleteActiveSheet(); // delete sheets begining with the last one 
     Utilities.sleep(400); 
    } 
} 
+0

哇!非常感謝 ! ;)在測試出現問題的電子表格之前,我剛剛嘗試了另一個電子表格上的建議。唉,我不斷收到「」我們很抱歉,發生服務器錯誤。請稍等,然後重試。 (3號線)」只是一個細節:我希望我是對的,因爲我已經適應了你的第二行:VAR oldfileID =?(‘0Ajz _..... 3NjJ1R0JiOUE’)//‘你原來的SS ID’在此先感謝;) – miodf

+0

嗨,在代碼中有一些錯誤...現在你有一個工作版本(我在第二個循環中使用ss而不是ssold,並且在第一個循環中我忘記了-1 –

+0

嗨Serge,非常感謝);唉,此刻我不斷收到同樣的錯誤,如果你不介意的話,我明天再試一次,然後我會通知你,再次謝謝你,PS:我也回答了Henrique的問題 – miodf

相關問題