复制包含特定值的行并将其粘贴到另一个 sheet

copy rows that contains certain value and paste it to another sheet

我正在尝试创建一个 sheet,它有一个主数据库sheet 和 8 个不同的位置。

所以每次我向数据库提交表单时,我都希望我的代码读取提交表单的 HUB 位置。并将提交表格的详细信息复制到相关 sheet。这就是我目前所拥有的。

基本上如果我描述流程会更容易:

  1. 用户输入相关详细信息
  2. 表单提交到数据库sheet
  3. 代码然后查看它用于哪个集线器,然后将详细信息复制到相关 sheet 但在数据库 mastersheet.
  4. 中保留一份副本

我希望这是有道理的?

据我所知,您希望将答案提交给主 sheet 然后一旦提交了答案,您就可以将其发送到相关 sheet

为此,我将创建一个表单提交,将答案放在 sheet

  const SOURCE_FORM_ID = link; // Change according to your needs

 {
  const form = FormApp.openById(SOURCE_FORM_ID);
  ScriptApp.newTrigger("onFormSubmitTrigger")
    .forForm(form)
    .onFormSubmit()
    .create();
  }



function onFormSubmitTrigger(e) {
  const targetSpreadsheet = SpreadsheetApp.openById("insert sheet id");
  const targetSheet = targetSpreadsheet.getSheetByName("C");
  if (targetSheet.getLastRow() === 0) { // Add headers if they don't exist yet
    const itemTitles = e.source.getItems().map(item => item.getTitle()); // Get item titles
    itemTitles.unshift("Timestamp"); // Append "Timestamp" to the sheet (if desired)
    targetSheet.appendRow(itemTitles); // Append form item titles to the sheet
  }
  const itemResponses = e.response.getItemResponses();
  const responses = itemResponses.map(itemResponse => itemResponse.getResponse()); // Get user responses
  responses.unshift(new Date()); // Add today's date to the responses (if desired)
  targetSheet.appendRow(responses.map(e => Array.isArray(e) ? e.join(",") : e)); // Append responses to the sheet
}

上面的代码将创建一个链接到您的表单的触发器,该表单将提交对特定 sheet

的答案

之后编辑或手动触发的代码将其移动到相关 sheet

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var seet = ss.getSheetByName('TC'); //source sheet
  var testrange = seet.getRange('J:J'); //range to check
  var testvalue = (testrange.getValues());
  var csh = ss.getSheetByName('C'); //destination sheet
  var data = [];
  var j =[];

  //Condition check in H:H; If true copy the same row to data array
for (i=0; i<testvalue.length;i++) {
  if ( testvalue[i] == 'SENT') {
  data.push.apply(data,seet.getRange(i+1,1,1,25).getValues());
  //Copy matched ROW numbers to j
  j.push(i);
 }
 }
//Copy data array to destination sheet

 csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);

//Delete matched rows in the source sheet
  for (i=0;i<j.length;i++){
  var k = j[i]+1;
  sheet.deleteRow(k);

//Alter j to account for deleted rows
  if (!(i == j.length-1)) {
  j[i+1] = j[i+1]-i-1;
}

上面的代码是我用来将一行移动到另一行的代码 sheet 稍微修改一下你就可以将它移动到目的地 sheet 而将它留在 master sheet如果设置了表单提交将表单数据发送给master