為了作業,我的團隊保留了一個常規客戶資料庫,每次我們將新客戶登錄到資料庫時,團隊都必須在其中復制并粘貼一個“模板”頁面。
我希望他們能夠單擊標有“創建新客戶”的作業表,該作業表在單元格 A1 中僅顯示兩個單元格“客戶名稱”,在單元格 B1 中,他們可以手動輸入名稱。一旦他們這樣做了,我想在那些復制原始模板表的單元格旁邊有某種提交按鈕,并將該新選項卡重命名為單元格 B1 中的客戶名稱,同時還保留模板頁面的保護。
如果我造成任何混亂,我深表歉意,但我在團隊洗掉資料/腳本等方面遇到了多個問題,導致我自己回溯以不斷解決問題。先感謝您!
uj5u.com熱心網友回復:
描述
我可以建議使用 Ui 提示來獲取客戶名稱。下面是提示用戶輸入名稱、復制模板、應用客戶名稱和應用模板保護的簡單示例。提示是從選單選項觸發的,而不是從電子表格單元格觸發的。
腳本
function onOpen(e) {
var menu = SpreadsheetApp.getUi().createMenu("My Menu");
menu.addItem("Create New Customer","createNewCustomer");
menu.addToUi();
}
function createNewCustomer() {
try {
let ui = SpreadsheetApp.getUi();
let response = ui.prompt("Customer Name",ui.ButtonSet.OK_CANCEL);
if( response.getSelectedButton() == ui.Button.OK ) {
let spread = SpreadsheetApp.getActiveSpreadsheet();
let sheets = spread.getSheets();
let name = response.getResponseText();
// make sure the sheet doesn't already exist
sheets.forEach( sheet => { if( sheet.getName() === name ) { throw "Customer " name " already defined" } } );
let template = spread.getSheetByName("Template");
let copy = template.copyTo(spread);
copy.setName(name);
// get all protected ranges from template
let protections = template.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for( let i = 0; i < protections.length; i ) {
let protection = protections[i];
let rangeNotation = protection.getRange().getA1Notation();
let protectRange = copy.getRange(rangeNotation).protect();
protectRange.setDescription(protection.getDescription());
protectRange.setWarningOnly(protection.isWarningOnly());
// set all eligible editors
if (!protection.isWarningOnly()) {
protectRange.removeEditors(protectRange.getEditors());
protectRange.addEditors(protection.getEditors());
}
}
}
}
catch(err) {
ui.alert(err);
}
}
參考
- https://developers.google.com/apps-script/reference/base/ui.html#createMenu(String)
- https://developers.google.com/apps-script/reference/base/ui.html#prompt(String,ButtonSet)
- https://developers.google.com/apps-script/reference/spreadsheet/protection
- https://webapps.stackexchange.com/questions/86984/in-google-sheets-how-do-i-duplicate-a-sheet-along-with-its-permission/87000#87000
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/450844.html
下一篇:更新字典python中的鍵名
