需要帮助在脚本编辑器中创建For循环,以便在Google电子表格的所有工作表上创建脚本运行代码

时间:2012-07-17 18:20:09

标签: google-apps-script google-docs-api google-spreadsheet-api

我有一个脚本,我试图在谷歌文档中的所有工作表上运行,不知道如何使这项工作。它适用于一张纸,但我有许多纸张都具有需要检查的相同格式。感谢。

这是我尝试应用于所有工作表的脚本。

function sendEmail(email_address, email_subject, email_message) {
  MailApp.sendEmail(email_address, email_subject, email_message);
}


function timestamp() {
return new Date()
}

var EMAIL_SENT = "EMAIL_SENT";


function test_sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.setActiveCell('A2');
  var criterion_cutoff = 5;
  var i = 0;
  var startRow = 2;
  var addr;
  var subj;
  var msg;
  var timecheck
  do {
    addr = cell.offset(i,0).getValue();
    subj = cell.offset(i,1).getValue();
    msg = cell.offset(i,2).getValue();
    criterion = cell.offset(i,3).getValue();
    timecheck = cell.offset(i,11).getValue();
    if (timecheck > 0) {
      if(criterion < criterion_cutoff) {
        sendEmail(addr,subj,msg);
        Browser.msgBox('Sending email to: ' + addr);
      }}
    i++;
  } while( cell.offset(i, 0).getValue().length > 0 )
  sheet.getRange(2, 5).setValue(timestamp());  
  Browser.msgBox('Done!');
}

1 个答案:

答案 0 :(得分:0)

您可以通过进行以下更改来使用要应用脚本的ID数组:
1.改变

function test_sendEmail() {
  var sheet = SpreadsheetApp.getActiveSheet();

为:

function test_sendEmail(sheetID) {
  var sheet = SpreadsheetApp.openById(sheetID);

2。定义要更改的工作表ID数组:

var idArray = [Spreadsheet1_id, Spreadsheet2_id, ...];

3。创建一个循环遍历数组的所有元素

for(var k in idArray) test_sendEmail(idArray[i]);

如果您不想手动填充idArray,则可以创建一个功能,该功能可以提取Google云端硬盘中所有电子表格的ID。如果这是您想要的,那么请使用以下代码,而不是我在第2点提供的代码行。

var sprArr =  DocsList.getFilesByType("spreadsheet");
var idArray;
for(var k in sprArr) idArray.push(sprArr[i].getId());