Javascript 从菜单运行时,不会弹出消息框。这个功能也很慢
我有两个问题 1) 我的函数Javascript 从菜单运行时,不会弹出消息框。这个功能也很慢,javascript,google-apps-script,popup,Javascript,Google Apps Script,Popup,我有两个问题 1) 我的函数noDateAlert()很慢。有什么建议可以让它在5秒钟内完成吗?根据需要检查的线路数量,当前需要17-30条线路 2) 运行noDateAlert()时不会弹出错误消息在我的自定义菜单的另一个函数中。当我从脚本页面自行运行它时,它工作正常。在脚本页面的其他程序中运行时,它也可以正常工作 我用这个程序来警告我3个单元格是否为空 当它包含在另一个函数中时,它是列出的第一件事 下面是函数: function noDateAlert() { var ss = Spr
noDateAlert()代码>很慢。有什么建议可以让它在5秒钟内完成吗?根据需要检查的线路数量,当前需要17-30条线路
2) 运行noDateAlert()时不会弹出错误消息代码>在我的自定义菜单的另一个函数中。当我从脚本页面自行运行它时,它工作正常。在脚本页面的其他程序中运行时,它也可以正常工作
我用这个程序来警告我3个单元格是否为空
当它包含在另一个函数中时,它是列出的第一件事
下面是函数:
function noDateAlert() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh0 = ss.getSheetByName("Loads");
// get data from Loads sheet
var data = sh0.getRange(8,29,53,31).getValues();
var data2 = sh0.getRange(8,3,53,3).getValues();
for(var i=0; i < 45; i++) { //Controls how many rows it goes through for posting // len = data.length; i < len
//Only work on loads currently wanting to post
if(data2[i][0] == "P-Post"){
//Warn me if all 3 cells in one row are empty/blank
if(data[i][0] == "" && data[i][1] == "" && data[i][2] == ""){
Browser.msgBox("Some of the loads you want to post are missing dates. Please check dates and run 'Post Loads' again.");
return false;
break;
};
};
};
};
函数noDateAlert(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh0=ss.getSheetByName(“加载”);
//从负载表获取数据
var data=sh0.getRange(8,29,53,31).getValues();
var data2=sh0.getRange(8,3,53,3).getValues();
for(var i=0;i<45;i++){//控制它为过帐而经过的行数//len=data.length;i
在你的msgbox上试试这个。我会继续研究另一个问题
SpreadsheetApp.getUi().alert('Some of the loads you want to post are missing dates. Please check dates and run \'Post Loads\' again.');
我不知道你的数据,但我怀疑我这样做。但由于您可以访问和了解您的数据,我认为将其分为两个范围是有意义的。但是,我希望您认识到data2[I][0]实际上是第3列,data[I][0]实际上是第29列。我将I的限制保留为53,因为您在两个范围中都指定了53行。但是再一次。我不知道细节,也无法访问数据。如果这没用,你可以把它改回去
function noDateAlert()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh0=ss.getSheetByName("Loads");
var data = sh0.getRange(8,29,53,31).getValues();
var data2 = sh0.getRange(8,3,53,3).getValues();
for(var i=0;i<53;i++)
{
if(data2[i][0]=="P-Post")
{
if(!data[i][0] && !data[i][1] && !data[i][2])
{
SpreadsheetApp.getUi().alert('Some of the loads you want to post are missing dates. Please check dates and run \'Post Loads\' again.');
return false;
}
}
}
}
函数noDateAlert()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh0=ss.getSheetByName(“加载”);
var data=sh0.getRange(8,29,53,31).getValues();
var data2=sh0.getRange(8,3,53,3).getValues();
对于(var i=0;i请在您的msgbox中尝试此方法。我将继续研究另一个问题
SpreadsheetApp.getUi().alert('Some of the loads you want to post are missing dates. Please check dates and run \'Post Loads\' again.');
我不了解您的数据,但我怀疑我是否这样做。但由于您可以访问并了解您的数据,我认为将其分为两个范围是有意义的。不过,我希望您认识到,数据2[I][0]实际上是第3列,数据[I][0]实际上是第29列。我将I的限制保留为53,因为您在两个范围中都指定了53行。但同样,我不知道详细信息,也无法访问数据。因此,如果这没有帮助,您可以将其更改回
function noDateAlert()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh0=ss.getSheetByName("Loads");
var data = sh0.getRange(8,29,53,31).getValues();
var data2 = sh0.getRange(8,3,53,3).getValues();
for(var i=0;i<53;i++)
{
if(data2[i][0]=="P-Post")
{
if(!data[i][0] && !data[i][1] && !data[i][2])
{
SpreadsheetApp.getUi().alert('Some of the loads you want to post are missing dates. Please check dates and run \'Post Loads\' again.');
return false;
}
}
}
}
函数noDateAlert()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh0=ss.getSheetByName(“加载”);
var data=sh0.getRange(8,29,53,31).getValues();
var data2=sh0.getRange(8,3,53,3).getValues();
对于(var i=0;iWhy是data2
获取3列数据?显示的代码仅从索引0获取数据。如果您需要,您可以将其更改为1列数据。不,我需要全部3列。我有3列日期,因此最多可以插入3列日期。如果它们都为空,我需要弹出警告。如果有办法将所有3列视为一列,请将其视为一列对象。为什么data2
获取3列数据?显示的代码仅获取索引0中的数据。如果您需要,可以将其更改为1列数据。不,我需要所有3列。我有3列日期,因此最多可以插入3列日期。如果它们都为空,我需要弹出警告。如果有办法查看所有3列作为一个对象可能会有所帮助。我确实尝试将其作为4个&&段,其工作原理与将其拆分为两个if语句大致相同。如果没有P-Post,则检查其他3列是没有意义的。我将检查您拥有的内容,并看看它如何改进。谢谢!我将其拆分为两个范围,因为sh中有大量数据eet和我不希望每次都必须收集所有数据。我只需要C列和AC:AE列。因此我尝试了SpreadsheetApp.getUi().alert('您要发布的某些加载缺少日期。请检查日期并再次运行'post loads';我遇到了与以前相同的问题。如果我从脚本编辑器手动运行它,它会工作。如果我作为定时触发器或从程序中运行它,它不会工作。问题不在于警报命令。我只是通过更改数据范围来运行它,它运行正常。因此,问题要么在代码中,要么在数据中。我在某些方面进行了数据验证范围。这可能是问题吗?我确实尝试过将其作为4个&&段,其工作原理与将其拆分为两个if语句大致相同。如果没有P-Post,但检查其他3列是没有意义的。我将检查您拥有的内容,看看它如何改进。谢谢!我将其拆分为两个范围,因为t中有大量数据他和我不希望每次都收集所有数据。我只需要C列和AC:AE列。所以我尝试了SpreadsheetApp.getUi().alert('您要发布的一些加载缺少日期。请检查日期,然后再次运行'post loads';我遇到了与以前相同的问题。如果我从脚本编辑器手动运行它,它会工作。如果我作为定时触发器或从程序中运行它,它不会工作。问题不在于警报命令。我只是通过更改数据范围来运行它,它运行正常。因此,问题要么在代码中,要么在数据中。我在某些方面进行了数据验证范围。这可能是问题所在吗?