【问题标题】:Insert row in external Google sheet on form submit在表单提交时在外部 Google 工作表中插入行
【发布时间】:2014-01-26 17:31:21
【问题描述】:

我有一个 Google 表单,其中提出了一个问题,“是否已创建传单”,如果答案为“否”,那么我需要从表单提交中收集某些数据,并在外片。 I have a drawing here.

第一张表 (the sheet with the form is here) 工作表 #2 (sheet that will get a new conditional row submit is here)

我已经启动了一个脚本来执行此插入,但我没有完成脚本的知识。

function onFormSubmit(e) {
  var timestamp = e.values[0];
  var name = e.values[1];
  var phone = e.values[2];
  var classTitle = e.values[4];
  var dueDate = e.values[7];

  //when there is field 19 in this sheet answer is No (There has not yet been a flyer created) this is when the insert would happen and the Field 19 answer is not something that needs to be carried to the new row in the external sheet)
  var formCreated = e.values[19];

  var workType = "Flyer" ;
  var contextNote = "This job was imported from a Org Learning's Class Reservation Form and followup will be required for clarification" ;
  var destinationSpreadSheetKey = "0Ai_2YLvaQba0dHA2bTdtd0pnTTZQcnRldjJXcjFjZHc";
  var destinationSheet = "Work_Orders";

  //if the answer to variable formCreated is "Yes", then halt Else continue with script

有人会帮我写这个脚本吗?我有一张图中田地的地图。

谢谢,

戴夫

【问题讨论】:

  • Google 论坛中的解决方案已接近尾声。我将在此处添加解决方案,以便为可能有类似需求的人提供答案。

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


【解决方案1】:

最终的工作代码,很好的注释。

/**
* Copies from separate source ranges and pastes at first empty row on target sheet
*/

function CopyIt() {
var source_spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var target_spreadsheet = SpreadsheetApp.openById("0Ai_2YLvaQba0dHA2bTdtd0pnTTZQcnRldjJXcjFjZHc");


// Get source and target sheets - can be the same or different
var sourcesheet = source_spreadsheet.getSheetByName("Form Responses");
var targetsheet = target_spreadsheet.getSheetByName("Work_Orders");

//Get row of last form submission
var source_last_row = sourcesheet.getLastRow();

// Check for answer to Flyer Created? If Yes, end now. If not Yes, i.e. No, continue.
var check = sourcesheet.getRange("T" + (source_last_row)).getValue();
if (check != 'Yes') {

    // Get the source ranges
    // TimeStamp
    var source_range1 = sourcesheet.getRange("A" + (source_last_row));

    //Name
    var source_range2 = sourcesheet.getRange("B" + (source_last_row));


    //Phone Number
    var source_range3 = sourcesheet.getRange("C" + (source_last_row));


    //Class Name/Title
    var source_range4 = sourcesheet.getRange("E" + (source_last_row));


    //First Session
    var source_range5 = sourcesheet.getRange("H" + (source_last_row));

    var source_range1_values = source_range1.getValues();
    var source_range2_values = source_range2.getValues();
    var source_range3_values = source_range3.getValues();
    var source_range4_values = source_range4.getValues();
    var source_range5_values = source_range5.getValues();

    // Get the last row on the target sheet
    var last_row = targetsheet.getLastRow();

    // Set the target ranges on target sheet
    //TimeStamp
    var target1 = targetsheet.getRange("A" + (last_row + 1));

    //Name
    var target2 = targetsheet.getRange("H" + (last_row + 1));

    //Phone
    var target3 = targetsheet.getRange("I" + (last_row + 1));

    //Your Project Name
    var target4 = targetsheet.getRange("K" + (last_row + 1));

    //Final Due Date
    var target5 = targetsheet.getRange("M" + (last_row + 1));

    //The next two are defined in script
    var target6 = targetsheet.getRange("O" + (last_row + 1));
    var target7 = targetsheet.getRange("Q" + (last_row + 1));

    // Put the data from the source sheet into the target sheet, after adding a new row
    targetsheet.insertRowAfter(last_row);
    target1.setValues(source_range1_values);
    target2.setValues(source_range2_values);
    target3.setValues(source_range3_values);
    target4.setValues(source_range4_values);
    target5.setValues(source_range5_values);

    // Just using the text to put this data, so there is no source range above.   
    target6.setValue('Flyer');
    target7.setValue('This job was imported from a Org Learning\'s Class Reservation Form and followup will be required for clarification');


 }
}

【讨论】:

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