Google apps script Google应用程序脚本将问题解析为变量

Google apps script Google应用程序脚本将问题解析为变量,google-apps-script,Google Apps Script,我已经创建了一个脚本,可以自动响应在我休息日发送给我的电子邮件。我最近决定升级它,这样我就可以通过给自己发送一封特殊格式的电子邮件来更新休假天数,从身体中提取数据,将数据存储在谷歌表单中,然后提取该值并将其用作我的休假值 我几乎所有的东西都按照我需要的方式工作,但是当我将从单元格读取的值传递给变量时,它就不起作用了。但是,当我在代码中将其设置为静态数字时,它工作正常。我认为这是因为它被当作一个字符串来读,所以我把它拆开,把它们具体地编成数字。然而,这也不起作用。所以现在我被卡住了。任何帮助都将不

我已经创建了一个脚本,可以自动响应在我休息日发送给我的电子邮件。我最近决定升级它,这样我就可以通过给自己发送一封特殊格式的电子邮件来更新休假天数,从身体中提取数据,将数据存储在谷歌表单中,然后提取该值并将其用作我的休假值

我几乎所有的东西都按照我需要的方式工作,但是当我将从单元格读取的值传递给变量时,它就不起作用了。但是,当我在代码中将其设置为静态数字时,它工作正常。我认为这是因为它被当作一个字符串来读,所以我把它拆开,把它们具体地编成数字。然而,这也不起作用。所以现在我被卡住了。任何帮助都将不胜感激

这是我的密码:

function autoResponder(){
  var content;
  var myemail = Session.getActiveUser().getEmail();

  //Searches your Google Drive for the spreasdsheet that will hold your day off values.
  var searchDrive = DriveApp.searchFiles('title contains "AutoResponder Data"')
  if (searchDrive.hasNext()){
    var spreadsheet = SpreadsheetApp.open(searchDrive.next());
    var sheet = spreadsheet.getSheets()[0];
    var data = sheet.getRange("A1");

    // Searches for your updater email and retrieves the message.   
    var findlabel = GmailApp.getUserLabelByName('AutoResponderUpdate');
    var thread = findlabel.getThreads()[0];

    //Checks if an update email was found.
    if (thread != undefined){
      var threadId = thread.getId();
      var message = thread.getMessages()[0];

      //Copies the data from your email and pastes it into a spreadsheet, then deletes the email entirely.
      var content = message.getPlainBody();
      var writeData = data.setValue(content);
      Gmail.Users.Threads.remove(myemail, threadId); 
    } else {
      //Reads data from spreadsheet if no email messages are found.
      var readData = data.getValue();
      var content = readData;
    }
  } else {
    //Creates the spreadsheet that will hold your day off values if one is not found.
    SpreadsheetApp.create('AutoResponder Data');
    autoResponder();
  }  
  // Specifies which days you have off. Sun=0 Mon=1 Tue=2 Wed=3 Thurs=4 Fri=5 Sat=6
  //var daysOff = [content.toString().replace("char(10)", "")];
  //var daysOff = [5,6];

  var test = content.split(",");
  var test2 = test.length;
  var output = "";
  if (test2 > -1){
    for (var n = 0; n < test2; n++){
      if (n === (test2 - 1)){
        output = output + parseInt(test[n]);
      } else {
        output = output + parseInt(test[n]) + ",";
      }
    }
  }
  var daysOff = [output]; 
  Logger.log(daysOff); 

  /* There is some code after this to auto reply to the email,
     but I've left that out. */
}
函数自动应答器(){
var含量;
var myemail=Session.getActiveUser().getEmail();
//在您的Google驱动器中搜索将保存您的休息日值的spreasdsheet。
var searchDrive=DriveApp.searchFiles('标题包含“自动应答器数据”)
if(searchDrive.hasNext()){
var spreadsheet=SpreadsheetApp.open(searchDrive.next());
var sheet=spreadsheet.getSheets()[0];
var数据=sheet.getRange(“A1”);
//搜索更新程序电子邮件并检索邮件。
var findlabel=GmailApp.getUserLabelByName('AutoResponderUpdate');
var thread=findlabel.getThreads()[0];
//检查是否找到更新电子邮件。
如果(线程!=未定义){
var threadId=thread.getId();
var message=thread.getMessages()[0];
//复制电子邮件中的数据并将其粘贴到电子表格中,然后完全删除电子邮件。
var content=message.getPlainBody();
var writeData=data.setValue(内容);
Gmail.Users.Threads.remove(myemail,threadId);
}否则{
//如果未找到电子邮件,则从电子表格读取数据。
var readData=data.getValue();
var content=readData;
}
}否则{
//创建一个电子表格,如果找不到,它将保存您的休息日值。
SpreadsheetApp.create(‘自动应答器数据’);
自动应答器();
}  
//指定您休息的天数。太阳=0周一=1周二=2周三=3周四=4周五=5周六=6
//var daysOff=[content.toString().replace(“char(10)”,“”];
//var daysOff=[5,6];
var测试=内容拆分(“,”);
var test2=test.length;
var输出=”;
如果(测试2>-1){
对于(var n=0;n
它就像一个字符串,因为您是字符串+数字:

output=output+parseInt(测试[n])

产生一个字符串而不是一个数字

var test = content.split(",");
var test2 = test.length;
var output = [];

test.forEach(function(e) { output.push(parseInt(e)) });

var daysOff = output;
Logger.log(daysOff); 

上面应该会生成您要查找的数值数组

当您说它不工作时,我想您的意思是
Logger.log(daysOff)
如果您从电子邮件或电子表格中获取数值,则不会记录任何内容。如果您一路记录
消息
内容
读取数据
测试
测试2
&
输出
,日志会告诉您什么?您能让您的代码只从电子表格中获取值吗?@DeanRansevycz因此,
Logger.log(daysOff)
确实显示了正确的数据。例如,如果我手动将
daysof
设置为
[5,6]
,日志将显示
[5.0,6.0]
,但如果我从和电子邮件或电子表格单元格中获取值
5,6
,它将作为
[5,6]
记录。从这一点上,我假设它的行为像一个字符串,而不是数字,但我不知道为什么或者如何改变它。希望这能澄清这一点。仍然不理解你的问题。是否您在休息日触发自动响应的逻辑不是在从电子邮件或电子表格填充时解释
daysOff
中的值?顺便问一下,为什么
输出
是字符串而不是数组?你的自动回复代码需要数组吗?那是我一直在寻找的神奇的代码行,谢谢!