[英]Want the link of the newly created template folder in google drive to add in the specific cell of google sheet through apps script
每當我通過 HTML 表單將新客戶端添加到工作表時,我有一個腳本可以在驅動器中創建客戶端的文件夾、子文件夾和工作表。 我正在尋找一種在 K 列中為該新創建的文件夾添加鏈接的方法,並在具有編輯權限的客戶端 email 上共享指向該文件夾的鏈接。
這是在驅動器中添加模板文件夾的代碼。 順便說一句,我對應用程序腳本很陌生。 所以我只是在學習和接受專家的指導。 熱烈感謝任何幫助。
function createClientAccountFolder(clientNamefolder, costingSheetId, ProposalDocId, renamesheet) {
// This is the root directory where all the client folders would be stored
const customerRoot = DriveApp.getFolderById('folder_id');
var ss = SpreadsheetApp.getActiveSpreadsheet();
var databaseSheet = ss.getSheetByName("Clients");
var lastAvailableRow = databaseSheet.getLastRow();
const clientName = databaseSheet.getRange(lastAvailableRow, 2).getValue();
if (clientNamefolder) {
// This creates the main folder with the customer name
const clients_sheet = ss.getRange("K2:K" + lastAvailableRow);
const mainFolder = customerRoot.createFolder(clientNamefolder);
var folder_url = mainFolder.getUrl();
// have tried a way to add the link in cell
clients_sheet.setFormula('=HYPERLINK("' + mainFolder.getUrl() + '")');
// Creating the sub folders
// Some are assigned to variables so that later children can be added
const action_tracker = mainFolder.createFolder("[SEO] - Action Tracker [" + clientNamefolder + "]")
const audit = mainFolder.createFolder("[SEO] - Audits [" + clientNamefolder + "]")
// Creating children
content.createFolder("[" + clientName + "] Content Approved")
content.createFolder("[" + clientName + "] Content Draft")
// Getting the documents
const action_tracker_sheet = DriveApp.getFileById('Sheet_id')
const analytics_audit = DriveApp.getFileById('Sheet_id')
// Moving the documents to the respective folders
const moved_action_tracker_sheet = action_tracker_sheet.moveTo(action_tracker)
const moved_analytics_audit = analytics_audit.moveTo(audit)
// renamin sheets
moved_action_tracker_sheet.SpreadsheetApp.getActiveSpreadsheet().rename(clientName + " Action Tracker");
moved_analytics_audit.SpreadsheetApp.getActiveSpreadsheet().rename(clientName + " Analytics Audit");
} else {
Logger.log('No Client Name Specified')
}
}
最終觸發此 function 以添加文件夾、子文件夾和工作表。
function test(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var databaseSheet = ss.getSheetByName("Clients");
var lastAvailableRow = databaseSheet.getLastRow();
const clientName = databaseSheet.getRange(lastAvailableRow, 2).getValue();
createClientAccountFolder(clientName, "[SHEET_ID]", "[DOC_ID]")
}
"K2:K" + lastAvailableRow
),而是一個,如"K" + lastRow
。function addLinkAndShare() {
const customerRoot = DriveApp.getFolderById('folder_id');
const ss = SpreadsheetApp.getActiveSpreadsheet();
const databaseSheet = ss.getSheetByName("Clients");
const lastRow = databaseSheet.getLastRow();
const clientName = databaseSheet.getRange(lastRow, 2).getValue();
if (clientName) {
const mainFolder = customerRoot.createFolder(clientNameFolder);
const folderUrl = mainFolder.getUrl();
databaseSheet.getRange("K" + lastRow).setValue(folderUrl);
const clientEmail = databaseSheet.getRange("J" + lastRow).getValue();
mainFolder.addEditor(clientEmail);
/*
/ Creating subfolders, renaming, etc. (unrelated to your question)
*/
} else {
Logger.log('No Client Name Specified')
}
}
我建議您創建文件夾,添加文件夾 URL 並在將數據附加到工作表的同一腳本上共享它,就在這樣做之前。 這樣,您可以一次添加所有值,而無需檢索剛剛設置的值(例如clientName
),並且您將減少必要的調用量(請參閱最小化對其他服務的調用)。
但是,由於您沒有提供與附加到工作表的數據相關的代碼,因此我沒有將其添加到上面的代碼示例中。
我希望您意識到您正在嘗試將相同的文件夾鏈接添加到工作表中的多個單元格。 我不知道這是否是有目的的,但我認為您可能想要更改該范圍。 無論如何,我建議的解決方案使用RichTextValue object,因此您不必使用公式。 你會想要改變
clients_sheet.setFormula('=HYPERLINK("' + mainFolder.getUrl() + '")');
至
var richText = SpreadsheetApp.newRichTextValue().setText("Folder URL").setLinkUrl(folder_url).build();
clients_sheet.setRichTextValue(richText);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.