Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何在不同的选项卡上运行相同的代码?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何在不同的选项卡上运行相同的代码?

Google apps script 如何在不同的选项卡上运行相同的代码?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一段代码,可以在一个表中运行,并在一个项目到期时发送电子邮件 function expiryAlert() { // get the spreadsheet object var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // set the first sheet as active SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]); //

我有一段代码,可以在一个表中运行,并在一个项目到期时发送电子邮件

function expiryAlert() {
  // get the spreadsheet object
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  // set the first sheet as active
  SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
  // fetch this sheet
  var sheet = spreadsheet.getActiveSheet();

  // figure out what the last row is
  var lastRow = sheet.getLastRow();

  // the rows are indexed starting at 1, and the first row
  // is the headers, so start with row 4
  var startRow = 3;

  // days left column
  var range = sheet.getRange(7,4,lastRow-startRow+1,1 );
  var numRows = range.getNumRows();
  var days_open_values = range.getValues();

  // item number column
  range = sheet.getRange(7, 1, lastRow-startRow+1, 1);
  var item_number_values = range.getValues();

  //Now grab the description number
  range = sheet.getRange(7, 2, lastRow-startRow+1, 1);
  var description_values = range.getValues();

  //Now grab the email addresses
  range = sheet.getRange(7, 7, lastRow-startRow+1, 1);
  var emailAddress_values = range.getValues();

  //Now grab the alert days value
  range = sheet.getRange(2, 2);
  var alert_days_values = range.getValues();

  //Grab the sheet title
  range = sheet.getRange(1,1);
  var title_values = range.getValues();

  //Grab the extra alert message
  range = sheet.getRange(3,2);
  var alert_message_values = range.getValues();

  var msg = "";

  // Loop over the days left values
  for (var i = 0; i <= numRows - 1; i++) {
    var days_open = days_open_values[i][0];
    var alert_days = alert_days_values;
    if(days_open == alert_days) {

      var item_number = item_number_values[i][0];
      var description = description_values[i][0];
      var emailAddress = emailAddress_values[i][0];
      var title = title_values;
      var alert_message = alert_message_values;

      msg = msg + "This is an automated alert for "+title+"\n\nItem number "+item_number+", "+description+", is due to expire in "+days_open+" days. Please ensure it is updated or reviewed.\n\n"+alert_message+"\n\n";

    MailApp.sendEmail(emailAddress,title, msg);
    }
  }

};
函数expiryAlert(){
//获取电子表格对象
var电子表格=SpreadsheetApp.getActiveSpreadsheet();
//将第一张图纸设置为活动
电子表格app.setActiveSheet(电子表格.getSheets()[0]);
//把这张纸拿来
var sheet=spreadsheet.getActiveSheet();
//找出最后一行是什么
var lastRow=sheet.getLastRow();
//这些行从1开始索引,第一行开始索引
//是标题,所以从第4行开始
var startRow=3;
//左栏天数
var范围=sheet.getRange(7,4,最后一行startRow+1,1);
var numRows=range.getNumRows();
var days_open_values=range.getValues();
//项目编号列
范围=sheet.getRange(7,1,最后一行startRow+1,1);
var item_number_values=range.getValues();
//现在获取描述编号
范围=sheet.getRange(7,2,最后一行startRow+1,1);
var description_values=range.getValues();
//现在抓取电子邮件地址
范围=sheet.getRange(7,7,最后一行startRow+1,1);
var emailAddress_values=range.getValues();
//现在获取警报天数值
range=sheet.getRange(2,2);
var alert_days_values=range.getValues();
//抓取工作表标题
范围=表。getRange(1,1);
var title_values=range.getValues();
//抓取额外的警告信息
范围=表。getRange(3,2);
var alert_message_values=range.getValues();
var msg=“”;
//循环剩余天数值

对于(var i=0;i您需要删除此代码:

// set the first sheet as active
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
如果希望代码在当前活动的工作表上运行,则该行代码始终会获取电子表格中的第一个工作表选项卡。索引零
[0]
是数组中的第一个工作表

如果希望代码影响当前活动的工作表选项卡,则需要手动选择希望代码使用的工作表选项卡,或者需要两个不同的菜单项,每个菜单项都将工作表名称传递给代码

您可以按名称获取每张图纸:

.getSheetByName(theSheetName)
如果这样做,则需要将工作表名称传递给函数

function expiryAlert(theSheetName) {

您可以在每张工作表中有一个看起来像按钮的图像,附加的脚本将有工作表名称。您可以有一个带有两个不同按钮的侧栏。您可以有一个带有工作表名称下拉列表的侧栏。

您需要删除此代码:

// set the first sheet as active
SpreadsheetApp.setActiveSheet(spreadsheet.getSheets()[0]);
如果希望代码在当前活动的工作表上运行,则该行代码始终会获取电子表格中的第一个工作表选项卡。索引零
[0]
是数组中的第一个工作表

如果希望代码影响当前活动的工作表选项卡,则需要手动选择希望代码使用的工作表选项卡,或者需要两个不同的菜单项,每个菜单项都将工作表名称传递给代码

您可以按名称获取每张图纸:

.getSheetByName(theSheetName)
如果这样做,则需要将工作表名称传递给函数

function expiryAlert(theSheetName) {

您可以在每张工作表中有一个看起来像按钮的图像,所附的脚本将有工作表名称。您可以有一个带有两个不同按钮的侧栏。您可以有一个带有工作表名称下拉列表的侧栏。

我也做过类似的事情。我不是专家,只是一个苦苦挣扎的业余程序员。您的脚本可能会生成一个code.gs选项卡,右键。单击该选项卡并下拉,选择“复制”。它将在底部创建一个名为Copyof code.gs的新选项卡。进入Copyof code.gs脚本对代码进行所需的更改。单击“保存”按钮。返回左侧垂直选项卡列表中的选项卡,(如果选择顶部选项卡,则下一位不起作用)。选择下拉,重命名,然后重命名为有意义的内容。如果您很乐意保留Code.gs,则需要返回到以前从“选择下拉,删除”复制的原始Code.gs。在弹出窗口中确认您已确定。需要此步骤,因为它不喜欢同名的选项卡。转到“垂直选项卡名称列表”复制选择下拉菜单重命名,然后仔细选择并删除Copyof,只留下Code.gs 点击save按钮,然后点击run按钮。瞧,新代码将运行。基于垂直选项卡列表最低选项卡中编写的代码


我已经创建了18个类似的选项卡,所有这些选项卡处理数据的方式都略有不同。在保存和运行之前,通过这个复杂的复制、重命名和删除过程,似乎无法在不将某个选项卡移动到选项卡列表底部的情况下执行该选项卡。对于详细信息,我感到抱歉,希望它有意义。如果有人知道更简单的方法,我会很高兴,Des>我也做过类似的事情。我不是专家,只是一个苦苦挣扎的业余程序员。你的脚本可能会生成一个code.gs选项卡,对吧。单击该选项卡并下拉,选择“制作副本”。它将在底部创建一个名为Copyof code.gs的新选项卡。进入Copyof code.gs脚本对代码进行所需的更改。单击“保存b”按钮。返回左侧垂直选项卡列表中的选项卡(如果选择顶部选项卡,则下一位不起作用)。选择下拉,重命名,然后重命名为有意义的内容。如果您很乐意保留Code.gs,则需要返回到以前从“选择下拉,删除”复制的原始Code.gs。在弹出窗口中确认您已确定。需要此步骤,因为它不喜欢同名的选项卡。转到“垂直选项卡名称列表”复制选择下拉菜单重命名,然后仔细选择并删除Copyof,只留下Code.gs 点击save按钮,然后点击run按钮。瞧,新代码将运行。基于垂直选项卡列表最低选项卡中编写的代码

我已经创建了18个类似的选项卡,所有这些选项卡处理数据的方式都略有不同,似乎没有办法执行一个特定的选项卡,而不通过此命令将其移动到选项卡列表的底部