フォーム送信の最後の行を、使用しているスプレッドシート内の別のシートにコピーする方法を見つけようとしています。これはすべて列2の値に基づいています。最後の行をコピーするonFormSubmit 2列の値が値と一致する場合
私の現在のスプレッドシートでは、さまざまな方法で試しましたが、成功しませんでした。
function copyLastRow(event) {
var target = SpreadsheetApp.openById('1ulIvWOQIH9MRg9RSW6Xg5iHRikOBFJ0L9XQ46Y_r_6I').getSheetByName('Sheet8'); // copy data into this file & sheet.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses 1'); // name of source sheet.
var lastrow = sheet.getLastRow();
var sourceData = sheet.getRange(lastrow, 1,1, 12).getValues();
target.appendRow(sourceData[0])
}
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Sheet8" && r.getColumn() == 2 && r.getValue() == "Yes") {
var row = r.getLastRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sheet7");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
var source = s.getRange(row, 1, 1, numColumns).getValues;
target.appendRow(source[0])
}
}
これは私が最後に使用したコードである(ここでは別のポストから、正確な記事を覚えていないことができます)、動作するようには思えません。また、この最後のコードは本当に私が望んでいたものではありませんでした。なぜなら、1つではなく2つのステップを使用するからです。
https://docs.google.com/spreadsheets/d/1ulIvWOQIH9MRg9RSW6Xg5iHRikOBFJ0L9XQ46Y_r_6I/edit?usp=sharing
私が述べたように、私は、フォームが(スプレッドシート内の)第2欄の「はい」の値を送信されるとは別のシート(シート名=に、その行を転送すること(可能な場合)希望Yes)、値が "Yes"の行がすべて管理されます。
答えが「いいえ」の場合も同じことが起こります。 「フォームレスポンス1」は私のメインシートとなり、他の2つは個別の価値観が整理されます。
ありがとうございます!
迅速な回答ありがとうございました!私はこのコード行をどこに置くべきかを理解するのに困っています。私はそれをcopyLastRowイベントラインの中に入れようとしましたが、それだけでは動作しません。時間があれば、これをどのようにスクリプトに組み込むことができるか教えてください。ありがとうございました – Martin111
ありがとうございました!わかった。 – Martin111
申し訳ありませんが、イベントパラメータでは、フォーム送信トリガーに結びつける必要があることがわかっていると思います。 – Cooper