1

google-apps-scriptでGoogleスプレッドシート(​​約100枚)を2つ(またはそれ以上)のスプレッドシート(​​それぞれ約50枚)に分割するにはどうすればよいですか?

残念ながら、グーグルのバグ(https://productforums.google.com/d/topic/docs/H2ZakBguOgk/discussionを参照)のため、スプレッドシートファイル全体をコピーして各スプレッドシートの一部のシートを削除することはできません。

別のスプレッドシートにシートを1枚ずつコピーし、コピーが成功した場合は元のシートを削除することしかできません。

前もって感謝します ;)

4

1 に答える 1

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);
    }
}
于 2012-10-23T16:54:08.367 に答える