Javascript 无限循环GoogleAppScript
如何创建一个无限循环,在Google应用程序脚本中重复更改单元格值Javascript 无限循环GoogleAppScript,javascript,loops,google-apps-script,Javascript,Loops,Google Apps Script,如何创建一个无限循环,在Google应用程序脚本中重复更改单元格值 function doTest() { if(x>=360) x = 0; Utilities.sleep(500); x = x+1; SpreadsheetApp.getActiveSheet().getRange('a13').setValue(x); incr(); } 我希望它增加一个单元格值,直到它达到360,然后从0开始计算。请执行以下操作 注意调用flus
function doTest() {
if(x>=360) x = 0;
Utilities.sleep(500);
x = x+1;
SpreadsheetApp.getActiveSheet().getRange('a13').setValue(x);
incr();
}
我希望它增加一个单元格值,直到它达到360,然后从0开始计算。请执行以下操作
注意调用
flush
,这将确保电子表格在每次迭代时都会刷新。否则,您将无法实时看到单元格更新。 享受;-)
无限循环最终会使你的应用程序崩溃。但假设这就是你想要的,这里有一种方法:
function iterate() {
var range = SpreadsheetApp.getActiveSheet().getRange('a13');
var i = 0;
while(true) {
range.setValue(i);
SpreadsheetApp.flush();
i = (++i) % 361;
}
}
- 您希望每0.5秒计算一次活动电子表格上单元格“A13”的数值
- 您希望将数字从0循环到360
- 您希望将此循环循环为无限循环
Run()
。
- 这样,电子表格上就会打开一个侧栏
- 如果要停止计数,请单击“停止”按钮
函数设置值(v){
睡眠(500);
电子表格app.getActiveSheet().getRange(“A13”).setValue(v);
}
函数运行(){
var str='var stop=false;函数work(v){return new Promise((resolve,reject)=>google.script.run.withSuccessHandler(()=>resolve()).setValue(v));}异步函数start(){stop=true;var i=0;while(stop){wait work(i);i=(++i)%361;};
var html=HtmlService.createHtmlOutput(str);
SpreadsheetApp.getUi().showSidebar(html);
}
扩展HTML:
在上面的示例脚本中,HTML被缩小了。下面的脚本是扩展的HTML
这仅用于确认HTML。因此,您无需复制和粘贴此内容。
<input type="button" value="start" onclick="start()">
<input type="button" id="stop" value="stop" onclick="stop=false">
<script>
var stop = false;
function work(v) {
return new Promise((resolve, reject) => google.script.run.withSuccessHandler(() => resolve()).setValue(v));
}
async function start() {
stop = true;
var i = 0;
while(stop) {
await work(i);
i = (++i) % 361; // This is from Dimu Designs's answer.
}
}
</script>
var-stop=false;
职能工作(五){
返回新承诺((resolve,reject)=>google.script.run.withSuccessHandler(()=>resolve()).setValue(v));
}
异步函数start(){
停止=真;
var i=0;
while(停止){
等待工作(一);
i=(++i)%361;//这是Dimu Designs的答案。
}
}
注:
- 我使用循环过程
如果此方法不是您的目标方向,我很抱歉。使用
for循环
或while
循环。在任何情况下,请注意脚本运行时都有配额,函数在时间结束前不会运行。是的,它将在大约5分钟后停止,并且不可预测。很抱歉,我的回答对您的情况没有帮助。我在回答中使用了您的循环过程,因为我认为这是一种很好的方法。谢谢你让我学习你的答案。但是如果你对此有任何问题,请告诉我。我想修改它。
function setValue(v) {
Utilities.sleep(500);
SpreadsheetApp.getActiveSheet().getRange("A13").setValue(v);
}
function run() {
var str = '<input type="button" value="start" onclick="start()"><input type="button" id="stop" value="stop" onclick="stop=false"><script>var stop=false; function work(v){return new Promise((resolve, reject)=> google.script.run.withSuccessHandler(()=> resolve()).setValue(v));}async function start(){stop=true; var i=0; while(stop){await work(i); i=(++i) % 361;}}</script>';
var html = HtmlService.createHtmlOutput(str);
SpreadsheetApp.getUi().showSidebar(html);
}
<input type="button" value="start" onclick="start()">
<input type="button" id="stop" value="stop" onclick="stop=false">
<script>
var stop = false;
function work(v) {
return new Promise((resolve, reject) => google.script.run.withSuccessHandler(() => resolve()).setValue(v));
}
async function start() {
stop = true;
var i = 0;
while(stop) {
await work(i);
i = (++i) % 361; // This is from Dimu Designs's answer.
}
}
</script>