下記のような作業を想定。
- 空のSpreadsheetを指定のフォルダにGASで作成
誤サンプルコード①
function myFunction( ) {
var folder = DriveApp.getFolderById(‘***’);
var spreadsheet = folder.createFile(‘テスト’, ‘ ‘, MimeType.GOOGLE_SHEETS);
}
結果
Exception: 無効な引数: file.contentType(行 3、ファイル「コード」)
いろいろ調べると、FolderクラスのcreateFileではSpreadsheetを作成できないらしい。
誤サンプルコード②
function myFunction( ) {
var folder = DriveApp.getFolderById(‘***’);
var spreadsheet = SpreadsheetApp.create(‘テスト’); //SpreadsheetAppからspreadsheetを作成
folder.addFile(spreadsheet); // folderにspreadsheetを追加
DriveApp.removeFile(spreadsheet); //rootfolderからspreadsheetを削除
}
結果
Exception: パラメータ(SpreadsheetApp.Spreadsheet)が DriveApp.Folder.addFile のメソッドのシグネチャと一致しません。(行 4、ファイル「コード」)
DriveAppクラスでSpreadsheetを取得してからaddFileをする必要がある様子。
正サンプルコード
function myFunction( ) {
var folder = DriveApp.getFolderById(‘***’);
var spreadsheet = SpreadsheetApp.create(‘テスト’);
var spreadsheetId = spreadsheet.getId(); //spreadsheetのIDを取得
spreadsheet = DriveApp.getFileById(spreadsheetId); //DriveAppからspreadsheetを取得し直し
folder.addFile(spreadsheet);
DriveApp.removeFile(spreadsheet);
}
補足
上記のコードでもSpreadsheetが作成されたが、以下の4つのメソッドはDeprecated(非推奨)となっている。(20201018現在)
- ・addFile(file)
- ・addFolder(folder)
- ・removeFile(file)
- ・removeFolder(folder)
代わりに、以下のメソッドを使用することになる。
- ・moveTo(destination)
destinationにfile、folderを移動できる。
補足サンプルコード
function myFunction( ) {
var folder = DriveApp.getFolderById(‘1Kaqh7lkpvboSX-s3hDYnK5wAl-R_uVI3’);
var spreadsheet = SpreadsheetApp.create(‘テスト’);
var spreadsheetId = spreadsheet.getId();
spreadsheet = DriveApp.getFileById(spreadsheetId);
spreadsheet.moveTo(folder); //addFile, removeFileの代わりにmoveToを使用
}
コメント