2
3つのSpreadSheetsを1つに保存しようとしています。このためには、3つのファイルが存在するかどうかをチェックする必要があります。しかし、私のコードは動作していません:Google SpreadSheet Script - ファイル数を確認してください
function mergeSheets() {
var myFolder = DriveApp.getFoldersByName('myFolder').next();
var spreadSheets = myFolder.getFiles();
var file1 = "myfile1.xlsx";
var file2 = "myfile2.xlsx";
var file3 = "myfile3.xlsx";
while(spreadSheets.hasNext()) {
var sheet = spreadSheets.next();
if ((sheet.getName()==file1) && (sheet.getName()==file2) &&
(sheet.getName()==file3)) {
var newSpreadSheet = SpreadsheetApp.create("myList");
var spreadSheet = SpreadsheetApp.openById(sheet.getId());
for(var y in spreadSheet.getSheets()) {
spreadSheet.getSheets()[y].copyTo(newSpreadSheet);
}
// Rename sheets with string "Copy of fileX" to "fileX"
if (newSpreadSheet.getSheetByName('Kopie von file1') == true){
newSpreadSheet.getSheetByName('Kopie von file1').setName('file1')
}
if (newSpreadSheet.getSheetByName('Kopie von file2') == true){
newSpreadSheet.getSheetByName('Kopie von file2').setName('file2')
}
if (newSpreadSheet.getSheetByName('Kopie file3') == true){
newSpreadSheet.getSheetByName('Kopie von file3').setName('file3')
}
// Delete standard sheet if create a new spreadsheet
newSpreadSheet
.deleteSheet(newSpreadSheet.getSheetByName('Tabellenblatt1'))
var file = DriveApp.getFileById(newSpreadSheet.getId())
var folder = DriveApp.getFoldersByName('myFolder').next();
var newFile = folder.addFile(file);
DriveApp.getRootFolder().removeFile(file);
}
}
}
私はこれがなぜ機能していないのかわかりません。私がオンラインで1つのファイルをif-statementにAND-operatorなしで使用すると動作しますが、これは問題ではないと思います。
ところで、アクティブシートとは何ですか?閉じたファイルでトリガーを使用しているときに意味がありますか?私のアクティブシートはフィルタ機能付きのシートですか? – TigerClaw
コードがスタンドアロンのAppsスクリプトファイルにある場合、アクティブなシートはありません。これは、Appsスクリプトプロジェクトがドキュメント(フォーム、シート、ドキュメント)にバインドされている場合にのみ機能します。この場合、スプレッドシートファイルをIDで取得する必要があります。 –