I want to make a copy of a file from Google Drive to the destination I set it to but .addFile seems to be deprecated. I tried using moveTo
and makeCopy
but I can't seem to get it to work.
This is the code I have for now:
function copyfile() {
var ss = SpreadsheetApp.getActive();
var activeSheet = ss.getSheetByName("sheet_Patients");
var activeSheetFM = ss.getSheetByName("_FolderMaker_");
var lastRow = activeSheet.getLastRow();
var data = activeSheet.getRange(lastRow,3,1,1).getValue();
var secondData = activeSheet.getRange(lastRow,4,1,1).getValue();
var folder_Name = [data+ ", " +secondData];
var folders = DriveApp.getFoldersByName(folder_Name);
while (folders.hasNext()) {
const folder = folders.next();
var id = folder.getId();
}
activeSheetFM.getRange(2,4,1,1).setValue(id);
var file = DriveApp.getFileById("1g25_24OTv_t5Qav2Q1hwEM_YBiPSaWWb");
var source_folder = DriveApp.getFolderById("1pqh74miSSy9WDSD3kpi02kkI6XDuXiuU");
var dest_folder = DriveApp.getFoldersByName(id);
//Logger.log(finalId);
var finalFile = file.makeCopy(data+ ', '+ secondData + ' ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + ' ' + file.getName());
dest_folder.addFile(finalFile);
source_folder.removeFile(finalFile);
}
dest_folder
of var dest_folder = DriveApp.getFoldersByName(id);
is FolderIterator.
I tried using moveTo and makeCopy but i cant seem to get it to work.
.var folders = DriveApp.getFoldersByName(folder_Name);
is the destination folder, you can directly use const folder = folders.next();
.moveTo
for movinf the file to the specific folder.When above points are reflected to your script, it becomes as follows.
var folders = DriveApp.getFoldersByName(folder_Name);
while (folders.hasNext()) {
const folder = folders.next();
var id = folder.getId();
}
activeSheetFM.getRange(2,4,1,1).setValue(id);
var file = DriveApp.getFileById("1g25_24OTv_t5Qav2Q1hwEM_YBiPSaWWb");
var source_folder = DriveApp.getFolderById("1pqh74miSSy9WDSD3kpi02kkI6XDuXiuU");
var dest_folder = DriveApp.getFoldersByName(id);
//Logger.log(finalId);
var finalFile = file.makeCopy(data+ ', '+ secondData + ' ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + ' ' + file.getName());
dest_folder.addFile(finalFile);
source_folder.removeFile(finalFile);
To:
var folders = DriveApp.getFoldersByName(folder_Name);
var dest_folder;
if (folders.hasNext()) {
dest_folder = folders.next();
} else {
throw new Error("No folder.")
}
activeSheetFM.getRange(2,4,1,1).setValue(dest_folder.getId());
var file = DriveApp.getFileById("1g25_24OTv_t5Qav2Q1hwEM_YBiPSaWWb");
var finalFile = file.makeCopy(data+ ', '+ secondData + ' ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + ' ' + file.getName());
finalFile.moveTo(dest_folder);
You basically need to use makeCopy(name, destination) where destination needs to be of a type folder
and not an iterator
.
Therefore, you should do:
var dest_folder = DriveApp.getFolderById(id);
var finalFile = file.makeCopy(data+ ', '+ secondData + ' ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + ' ' + file.getName(),dest_folder);
function copyfile() {
var ss = SpreadsheetApp.getActive();
var activeSheet = ss.getSheetByName("sheet_Patients");
var activeSheetFM = ss.getSheetByName("_FolderMaker_");
var lastRow = activeSheet.getLastRow();
var data = activeSheet.getRange(lastRow,3,1,1).getValue();
var secondData = activeSheet.getRange(lastRow,4,1,1).getValue();
var folder_Name = [data+ ", " +secondData];
var folders = DriveApp.getFoldersByName(folder_Name);
while (folders.hasNext()) {
const folder = folders.next();
var id = folder.getId();
}
activeSheetFM.getRange(2,4,1,1).setValue(id);
var file = DriveApp.getFileById("1g25_24OTv_t5Qav2Q1hwEM_YBiPSaWWb");
var source_folder = DriveApp.getFolderById("1pqh74miSSy9WDSD3kpi02kkI6XDuXiuU");
var dest_folder = DriveApp.getFolderById(id);
var finalFile = file.makeCopy(data+ ', '+ secondData + ' ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd') + ' ' + file.getName(),dest_folder);
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With