我是GAS的新手,我写了一个脚本来执行价格比较它基本上得到产品的价格,存储它们,并且每天通过基于时间的触发检查是否这个价格变化,如果价格变化发送一个电子邮件,如果没有任何改变什
所以现在我被卡住了,我想在电子表格中添加更多工作表,我需要在所有工作表中运行相同的脚本,但我不知道如何管理它。
据我所知,现在我的脚本基于此功能运行
“var ss = SpreadsheetApp.getActiveSpreadsheet();” ,脚本知道这是活动的电子表格,如果我配置一个基于时间的触发器,它就像一个魅力,但只适用于第一张表。我正在寻找使用基于时间的触发器运行脚本,并且此脚本在所有工作表中运行
我怎么能告诉脚本哪个是活动表,当我使用打开的文件时它很清楚,这是活动表,但我不知道如何在脚本运行时设置活动表。
我已经阅读了一些文档,有些人建议运行一个循环来检查电子表格中的所有工作表,获取名称或ID,并在所有这些工作表中运行脚本。几周前我刚刚开始使用javascript和Gas,我一直在使用它,但我无法使它工作
我找到了一些想要做类似事情的人的例子,但我真的不知道代码的所有功能,
以下是我发现here循环的一些示例,我希望此代码获取工作表的名称并执行函数,但我并不是真的。
function CheckSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for(var k=0;k<sheets.length;k++) {
excute function checkprice???
}
这是我的脚本,我不知道我找到的例子是否对我的情况有效
function CheckPrice() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source1 = ss.getRange("A27:A145");
var source2 = ss.getRange("B27:B145");
var source3 = ss.getRange("A28:A145").getValues();
var source4 = ss.getRange("E28:E145").getValues();
var source5 = ss.getRange("E27:E145");
var source6 = ss.getRange("A28:A145");
if (source6.isBlank()) {
Browser.msgBox('WAITING FOR DATA !', Browser.Buttons.OK);
Utilities.sleep(30000);
}
if (source5.isBlank()) {
source1.copyTo(ss.getRange("E27:E145"), {contentsOnly: true});
source2.copyTo(ss.getRange("F27:F145"), {contentsOnly: true});
Browser.msgBox('VALUES COPIED !', Browser.Buttons.OK);
}
var Inspector = false;
for(var i=0;i<source3.length;i++)
{
if(source3[i][0].toString() != source4[i][0].toString())
{
Inspector = true;
}
}
if(Inspector)
{
MailApp.sendEmail("oker82@gmail.",ss.getSheetName() + " HAS ", ss.getSheetName() + " CHANGED " );
}
else
{
Browser.msgBox('NOTHING CHANGES !', Browser.Buttons.OK);
}
}
答案 0 :(得分:0)
这是未经测试的,但我认为这是你正在寻找的。 p>
function CheckSheets(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for(var k=0;k<sheets.length;k++) {
CheckPrice(sheets[k].getName());
}
}
function CheckPrice(sheetName){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheetName);
var source1 = sheet.getRange("A27:A145");
var source2 = sheet.getRange("B27:B145");
var source3 = sheet.getRange("A28:A145").getValues();
var source4 = sheet.getRange("E28:E145").getValues();
var source5 = sheet.getRange("E27:E145");
var source6 = sheet.getRange("A28:A145");
if (source6.isBlank()) {
Browser.msgBox('WAITING FOR DATA !', Browser.Buttons.OK);
Utilities.sleep(30000);
}
if (source5.isBlank()) {
source1.copyTo(sheet.getRange("E27:E145"), {contentsOnly: true});
source2.copyTo(sheet.getRange("F27:F145"), {contentsOnly: true});
Browser.msgBox('VALUES COPIED !', Browser.Buttons.OK);
}
var Inspector = false;
for(var i=0;i<source3.length;i++)
{
if(source3[i][0].toString() != source4[i][0].toString())
{
Inspector = true;
}
}
}