英文:
Function Cooldown
问题
以下是您的代码的翻译部分:
function onOpen(){
var cooldown = 0;
DevDisableCD();
var menu = SpreadsheetApp.getUi().createMenu("r/place menu");
menu.addSeparator();
menu.addItem("设置颜色", "SetColor");
menu.addItem("开发者 { 关闭冷却", "DevDisableCD");
menu.addToUi();
};
function DevDisableCD(){
cooldown <- cooldown - 1;
}
function DisableCD(){
Utilities.sleep(300000);
cooldown <- cooldown - 1;
}
function EnableCD(){
cooldown <- cooldown + 1;
DisableCD();
}
function SetColor() {
if(cooldown = 0){
var ui = SpreadsheetApp.getUi();
var result = ui.prompt(
'设置颜色',
'请输入十六进制颜色代码(例如:#000000):',
ui.ButtonSet.OK_CANCEL);
var cellcolor = result.getResponseText();
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().setValue('a').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Place'), true);
if(cellcolor != ''){
spreadsheet.getActiveRangeList().setBackground(cellcolor);
EnableCD();
}
} else{
SpreadsheetApp.getActive().toast("您处于冷却中!", "每分钟只能填色一次");
}
}
希望这对您有所帮助。如果您需要进一步的帮助,请随时告诉我。
英文:
I want to make it so someone can only run a function via a custom menu every 1 minute, when they run the function it will run a function and then make them wait 1 minute before letting them run it again. Here is my entire code:
function onOpen(){
var cooldown = 0;
DevDisableCD();
var menu = SpreadsheetApp.getUi().createMenu("r/place menu");
menu.addSeparator();
menu.addItem("Set Color", "SetColor");
menu.addItem("Dev { Disable CD", "DevDisableCD");
menu.addToUi();
};
function DevDisableCD(){
cooldown <- cooldown - 1;
}
function DisableCD(){
Utilities.sleep(300000);
cooldown <- cooldown - 1;
};
function EnableCD(){
cooldown <- cooldown + 1;
DisableCD();
};
function SetColor() {
if(cooldown = 0){
var ui = SpreadsheetApp.getUi();
var result = ui.prompt(
'Set Color',
'Please enter your hex color (ie: #000000):',
ui.ButtonSet.OK_CANCEL);
var cellcolor = result.getResponseText();
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getCurrentCell().setValue('a')
.activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Place'), true);
if(cellcolor != ''){
spreadsheet.getActiveRangeList().setBackground(cellcolor);
EnableCD();
};
} else{
SpreadsheetApp.getActive().toast("Your on cooldown!", "You can only color a pixel every minute");
};
};
Edit: Yes I have tried Utilities.sleep()
答案1
得分: 2
这里是您要翻译的内容:
也许可以使用全局变量或一些状态管理器,您还可以使用lodash或Rxjs。
这是一个简单的全局变量解决方案:
let cooldown = false
const btn = document.getElementById("menu")
btn.addEventListener("click", () => {
console.log("inside func", cooldown)
setTimeout(() => {
cooldown = false
console.log("inside setTime", cooldown)
// 3秒
}, 3000)
if (!cooldown) {
// 其余的功能逻辑
console.log("pressed")
}
cooldown = true
})
您不在DOM中工作:
let cooldown = false;
const doSomething = () => {
console.log('inside func', cooldown);
setTimeout(() => {
cooldown = false;
console.log('inside setTime', cooldown);
// 3秒
}, 3000);
if (!cooldown) {
// 在这里做一些事情..其余的功能逻辑
consolelog('已执行');
}
cooldown = true;
};
英文:
Mybe use a global variable or some state managers, you can also use lodash or Rxjs.
here a simple global variable solution:
> let cooldown = false
> const btn = document.getElementById("menu")
>
> btn.addEventListener("click", () => {
> console.log("inside func", cooldown)
> setTimeout(() => {
> cooldown = false
> console.log("inside setTime", cooldown)
> // 3 seconds
> }, 3000)
> if (!cooldown ) {
> // rest of function logic
> console.log("pressed")
> }
>
> cooldown = true
> })
You aren't working in dom:
>
let cooldown = false;
const doSomething = () => {
console.log('inside func', cooldown);
setTimeout(() => {
cooldown = false;
console.log('inside setTime', cooldown);
// 3 seconds
}, 3000);
if (!cooldown) {
// do Something here..rest of function logic
console.log('excuted');
}
cooldown = true;
};
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论