Forms 通过脚本发送谷歌表单

Forms 通过脚本发送谷歌表单,forms,google-apps-script,gmail,google-sheets,Forms,Google Apps Script,Gmail,Google Sheets,我将家庭手机账单设置为自动转账,有时会忘记向每个人发送他们的账单份额。我想用谷歌应用程序建立一个自动化系统,向我发送一张表格,在那里我可以输入每个人的欠款。然后,在我提交表单后,应用程序将向我的计划中的人发送一封电子邮件,告知他们的到期金额。然后,我希望在一两周后将相同的预填表单发送回我,允许我用人们的付款状态更新我的googlesheet列 我已经知道如何处理表单数据,然后发送账单电子邮件。但是,我找不到通过谷歌scirpt重新发送表单的方法,这样我就可以更新是否有个人向我付款,我是否兑现了他

我将家庭手机账单设置为自动转账,有时会忘记向每个人发送他们的账单份额。我想用谷歌应用程序建立一个自动化系统,向我发送一张表格,在那里我可以输入每个人的欠款。然后,在我提交表单后,应用程序将向我的计划中的人发送一封电子邮件,告知他们的到期金额。然后,我希望在一两周后将相同的预填表单发送回我,允许我用人们的付款状态更新我的googlesheet列

我已经知道如何处理表单数据,然后发送账单电子邮件。但是,我找不到通过谷歌scirpt重新发送表单的方法,这样我就可以更新是否有个人向我付款,我是否兑现了他们的支票。我想我需要捕获response.id来更新相同的工作表条目,但我无法找到重新发送表单的方法。
我在谷歌上搜索了一下,尝试了一些方法,比如sendForm(“email”,formID),但没有找到任何东西。我在网上看到的一切都向我展示了如何从我的谷歌硬盘发送表单。然而,我想知道是否有人知道这种方法是否存在

以下是我迄今为止的代码示例(我绝不是一名专业程序员,所以请随意提出改进现有代码的建议):

/*在此处定义关键变量,如工作表的URL*/
var sheetId=“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”;
var sheetName=“表单响应”;
var sheetData=SpreadsheetApp.openById(sheetId).getSheetByName(sheetName).getDataRange();
var lastRow=sheetData.getNumRows();
var monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”,
“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
var base=[1,2];
功能测试(){
对于(i=0;i
我意识到最好的办法可能是让我计划中的人自动转账到我的银行账户。然而,我账户上的人喜欢发送实际支票,并且抵制这种想法。所以我想我会利用这个机会来提高我的脚本编写能力

提前感谢,,
Jeremy

这可能与您正在做的工作略有不同,但如果您让人们填写的表格连接到电子表格,我认为如果您使用该电子表格来验证他们是否填写了表格,会更容易。给响应加上时间戳,或者有一个用于计费月份的字段,只要标识一个时间段即可。在这段时间内,检查您的计划成员是否有响应。然后,您可以创建一个定期检查的电子邮件,并使用相同的电子邮件发送代码发送给尚未再次支付表单的人,或者只向自己发送电子邮件以采取任何适当的措施

/*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);

    }
  };