【问题标题】:send google form via script通过脚本发送谷歌表单
【发布时间】:2015-03-21 19:47:29
【问题描述】:

我将我的家庭手机账单设置为自动转账,但有时忘记向每个人发送他们的账单部分。我想用谷歌应用程序设置一个自动化系统,向我发送一个表格,我可以在其中输入每个人的欠款金额。然后在我提交表格后,该应用程序将向我计划中的人发送一封电子邮件,其中包含他们的应付金额。然后,我希望一两周后将相同的预填表格发回给我,以便我可以使用人们的付款状态更新我的 googlesheet 列。

我已经弄清楚如何处理表单数据,然后发送账单电子邮件。但是,我找不到通过谷歌脚本重新发送表格的方法,因此我可以更新个人是否已向我付款并且我已兑现他们的支票。我想我需要捕获 responce.id 来更新同一个工作表条目,但我无法找到重新发送表单的方法。
我用谷歌搜索了一下,并尝试了一些方法,比如 sendForm("email",formID) 但一直找不到任何东西。我在网上看到的所有内容都向我展示了如何从我的谷歌驱动器发送表单。但是,我想知道是否有人知道这种方法是否存在。

这是我到目前为止的代码示例(我绝不是专业程序员,因此请随时提出改进现有代码的建议):

/*Define key variables up here like URL for sheets */
var sheetId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var sheetName = "Form Responses";
var sheetData =SpreadsheetApp.openById(sheetId).getSheetByName(sheetName).getDataRange();
var lastRow = sheetData.getNumRows();
var monthNames = ["January", "February", "March", "April", "May",    "June",
 "July", "August", "September", "October", "November", "December"];

var base =  [ 1, 2];
function test(){
   for (i = 0; i< base.length; i++){Logger.log(i);} 
};


function lastBillComplete() {
  lastRow = sheetData.getNumRows();

  isSuesCheckCashed = sheetData.getValues()[lastRow-1][7];
  isNancysCheckCashed = sheetData.getValues()[lastRow-1][8];

  if (isSuesCheckCashed == "Yes" && isNancysCheckCashed == "Yes") {
    return true;}
  else{
    return false;}


  };


 function sendBill(){
 // Array of names that emails are being sent to
   var emails = ["xxxxxxx@gmail.com","xxxxxxx@gmail.com"]; //the real emails will go here.
   var names = ["Sue", "Mom"];

 //subject line of email
   var subject = "Verizon bill for " + monthNames[new Date(sheetData.getValues()[lastRow -1][2]).getMonth()];


//body of email that changes for each person 

for (i = 0; i < names.length; i++){
   var amount = sheetData.getValues()[lastRow-1][i+3];
   var body = new String("Hi  " + names[i] +",\n\nYour portion of this month's bill is $"+amount +". I have attached the .pdf of the bill to the email if you would like to look it over.  Please let me know if you have any questions.\n\nTalk to you soon, \nJeremy");
   MailApp.sendEmail(emails[i].toLowerCase(), subject, body);

    }
  };

我意识到最好的设置方法可能是让我计划中的人自动转帐到我的银行帐户。但是,我帐户上的人喜欢发送实际支票,并且反对这个想法。所以我想我会利用这个机会来提高我的脚本能力。

提前致谢, 杰里米

【问题讨论】:

    标签: forms google-apps-script gmail google-sheets


    【解决方案1】:

    这可能与您正在执行的方法略有不同,但如果您让人们填写的表格与电子表格相关联,我认为如果您使用该电子表格来验证是否或如果他们填写了表格,则不会。时间戳响应或具有计费月份的字段,只是用于标识时间段的任何内容。在该时间段内,检查您的计划成员是否有回应。然后,您可以创建一个time-based trigger 让它定期检查,并使用相同的电子邮件发送代码发送给尚未支付表单的人,或者只是给自己发送一封电子邮件以采取任何适当的措施。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多