const displayLogs = false;
async function onDriveHomePageOpen() {
return makeWelcomCard();
}
function makeWelcomCard() {
var userProperties = PropertiesService.getUserProperties();
var selectedLanguage = userProperties.getProperty('selectedLanguage') || 'en'; // Default to English if not set
var card = CardService.newCardBuilder();
var section = CardService.newCardSection();
var textParagraph = CardService.newTextParagraph().setText("Please select your language");
section.addWidget(textParagraph);
// Create a dropdown for selecting English or French
var languageDropdown = CardService.newSelectionInput()
.setType(CardService.SelectionInputType.DROPDOWN)
.setTitle("Language")
.setFieldName("language")
.addItem("English", "en", selectedLanguage === 'en')
.addItem("French", "fr", selectedLanguage === 'fr');
section.addWidget(languageDropdown);
// Add a button to save the selected language
var saveButton = CardService.newTextButton()
.setText("Save")
.setOnClickAction(CardService.newAction().setFunctionName("handleLanguageSelection"));
section.addWidget(saveButton);
// Add the section to the card
card.addSection(section);
return card.build();
}
function handleLanguageSelection(e) {
var language = e.commonEventObject.formInputs.language.stringInputs.value[0];
// Store the selected language in the user's properties
PropertiesService.getUserProperties().setProperty('selectedLanguage', language);
// Optionally, create a response card or message
var responseCard = CardService.newCardBuilder()
.addSection(
CardService.newCardSection().addWidget(
CardService.newTextParagraph().setText("Language selection saved: " + (language === 'en' ? 'English' : 'French'))
)
)
.build();
return CardService.newActionResponseBuilder()
.setNavigation(CardService.newNavigation().pushCard(responseCard))
.build();
}
async function onDriveItemsSelected(e) {
let logs = "";
let selectedLanguage = PropertiesService.getUserProperties().getProperty("selectedLanguage");
if (selectedLanguage == null || selectedLanguage == "") {
return makeWelcomCard();
}
else {
logs += "lang:" + selectedLanguage + "\n";
}
let itemDetails = e.drive.selectedItems[0];
let mimeType = itemDetails.mimeType;
let item = null;
if (mimeType === "application/vnd.google-apps.folder") {
item = DriveApp.getFolderById(itemDetails.id);
} else {
item = DriveApp.getFileById(itemDetails.id);
}
var parents = [];
let parentFolders = item.getParents();
//Change it to the correct drive (D:, E:, F:, G:, etc.)
let localDriveLetter = "G";
let localPath ="";
while (parentFolders.hasNext()) {
var folder = parentFolders.next();
logs += folder.getName() + "\n"
let name = folder.getName();
if (name == "Drive") {
if (Drive.Drives.get(folder.getId()).name != "Drive") {
name = "Shared Drives\" + Drive.Drives.get(folder.getId()).name;
}
}
parents.push(name);
parentFolders = folder.getParents();
}
parents = parents.reverse();
for (i = 0; i < parents.length; i++){
localPath = localPath + "\" + parents[i];
}
//Remove first backslash
localPath = localPath.substring(1);
// Add the item name to the local file path
localPath += "\" + item.getName();
// Split the localPath into rootFolder and remainingPath
let firstBackslashIndex = localPath.indexOf("\");
let rootFolder = localPath.substring(0, firstBackslashIndex);
let remainingPath = localPath.substring(firstBackslashIndex + 1);
// Replace root folder names based on the selected language
if (selectedLanguage === 'fr') {
logs += "Language detected: fr"+ "\n"
rootFolder = rootFolder.replace("My Drive", "Mon Drive");
rootFolder = rootFolder.replace("Shared Drives", "Drive partagés");
logs += rootFolder + "\n";
}
else {
logs += "Language detected: en"+ "\n"
}
// Reconstruct the localPath
localPath = rootFolder + "\" + remainingPath;
// Add the drive letter
localPath = localDriveLetter + ":\" + localPath;
// Add the current date and time to the logs
var currentDateTime = new Date();
logs += "Current date and time: " + currentDateTime.toLocaleDateString() + " " + currentDateTime.toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' }) + "\n";
return makeCard(localPath, logs);
}
function makeCard(text, logs) {
var card = CardService.newCardBuilder();
var section = CardService.newCardSection();
// Add text paragraph
var textParagraph = CardService.newTextParagraph().setText(text);
section.addWidget(textParagraph);
// Add the section to the card
card.addSection(section);
if (displayLogs) {
var logSection = CardService.newCardSection();
logSection.addWidget(CardService.newTextParagraph().setText(logs));
// Add the section to the card
card.addSection(logSection);
}
return card.build();
}