[英]Copy a row from one Google Sheet Spreadsheet to Another on Form Submit
我已經閱讀了很多其他文章並嘗試了一些方法,但是我還沒有找到解決方案。
我有一個可以輸入電子表格的Google表單。 當有人提交時,我想根據第N列(14)中的數據來確定將新行復制到的位置。 如果是A,則將整行復制到電子表格A,如果是B,則將整行復制到電子表格B。
這些URL是原始文件的副本,以防有人需要玩轉。 表格在這里: 新標牌表格的副本
function movingRows() {
var spreadsheetUrlToWatch = 'https://docs.google.com/spreadsheets/d/1q7HyUL3bhd_gLEAfVJrH4strnkF9_UP6uhY4Qy5A6Vc/edit#gid=291411519';
var columnNumberToWatch = 14; // column A = 1, B = 2, etc.
var valueToWatchA = "Fusion";
var valueToWatchB = "LightSource";
var spreadsheetUrlToMoveTheRowToA = "https://docs.google.com/spreadsheets/d/1sWSSHOgdum0LtCggtM6Gz-ytmFJJjMXH9pZ0NYGMV7g/edit#gid=0";
var spreadsheetUrlToMoveTheRowToB = "https://docs.google.com/spreadsheets/d/1BM7x-5STx5DsEtzRiZEq8qxVXgjPjtIZoTxxWuAk46c/edit#gid=0";
var ss = SpreadsheetApp.openByUrl(spreadsheetUrlToWatch);
var sheet = ss.getSheets()[0];
var range = sheet.getActiveCell();
var sheetNameToWatch = ss.getSheets()[0].getSheetName();
console.log(sheetNameToWatch);
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatchA) {
var targetSheet = SpreadsheetApp.openByUrl(spreadsheetUrlToMoveTheRowToA).getSheets()[0];
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
}
else if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatchB) {
var targetSheet = SpreadsheetApp.openByUrl(spreadsheetUrlToMoveTheRowToB).getSheets()[0];
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);
}
}
通過Google腳本編輯器將代碼附加到表單。 庫珀提供的解決方案之后使用的代碼:
function copyToSpreadsheet()
{
var ss0=SpreadsheetApp.openById('1q7HyUL3bhd_gLEAfVJrH4strnkF9_UP6uhY4Qy5A6Vc');
var sht0=ss0.getSheetByName('Form Responses 1');
var rng0=sht0.getDataRange();
var rng0A=rng0.getValues();
//Fusion Spreadsheet
var ssA=SpreadsheetApp.openById('1sWSSHOgdum0LtCggtM6Gz-ytmFJJjMXH9pZ0NYGMV7g');
var shtA=ssA.getSheetByName('Sheet1');
//LightSource Spreadsheet
var ssB=SpreadsheetApp.openById('1BM7x-5STx5DsEtzRiZEq8qxVXgjPjtIZoTxxWuAk46c');
var shtB=ssB.getSheetByName('Sheet1');
var row= rng0A[rng0A.length-1];
if(row[13]== "Fusion")
{
shtA.appendRow(row);
}
if(row[13]== "LightSource")
{
shtB.appendRow(row);
}
}
我沒有測試此代碼,但我認為它已經接近。 這很簡單。 只需將其綁定到onFormSubmit,它將獲得最后一個條目。 我假設所有電子表格均已創建,並且它們具有Sheet1。
function copyToSpreadsheet()
{
var ss0=SpreadsheetApp.openById('1q7HyUL3bhd_gLEAfVJrH4strnkF9_UP6uhY4Qy5A6Vc');
var sht0=ss0.getSheetByName('Sheet1');
var rng0=sht0.getDataRange();
var rng0A=rng0.getValues();
var ssA=SpreadsheetApp.openById('1sWSSHOgdum0LtCggtM6Gz-ytmFJJjMXH9pZ0NYGMV7g');
var shtA=ssA.getSheetByName('Sheet1');
var ssB=SpreadsheetApp.openById('1sWSSHOgdum0LtCggtM6Gz-ytmFJJjMXH9pZ0NYGMV7g');
var shtB=ssB.getSheetByName('Sheet1');
var row= rng0A[rng0A.length-1];
if(row[13]==1)
{
shtA.appendRow(row);
}
if(row[13]==2)
{
shtB.appendRow(row);
}
}
我確實認為,如果onFormSubmits快速進入,這種方法可能無法跟上,並可能獲取錯誤的數據。 我會考慮添加另一列稱為Copied的列,並遍歷所有行,然后復制在Copied Column中沒有時間戳的行。 循環版本是下面的代碼。
function copyToSpreadsheetWithLoop()
{
var CopiedColumn=20;//Don't really know
var ss0=SpreadsheetApp.openById('1q7HyUL3bhd_gLEAfVJrH4strnkF9_UP6uhY4Qy5A6Vc');
var sht0=ss0.getSheetByName('Sheet1');
var rng0=sht0.getDataRange();
var rng0A=rng0.getValues();
var ssA=SpreadsheetApp.openById('1sWSSHOgdum0LtCggtM6Gz-ytmFJJjMXH9pZ0NYGMV7g');
var shtA=ssA.getSheetByName('Sheet1');
var ssB=SpreadsheetApp.openById('1sWSSHOgdum0LtCggtM6Gz-ytmFJJjMXH9pZ0NYGMV7g');
var shtB=ssB.getSheetByName('Sheet1');
for(var i=1;i<rng0A.length;i++)
{
var row= rng0A[i];
if(row[CopiedColumn-1])
{
if(row[13]==1)
{
shtA.appendRow(row);
sht0.getRange(i+1,CopiedColumn).setValue(Utilities.formatDate(new Date(), "GMT-6", "dd/MM/yyyy HH:mm:ss"));
}
if(row[13]==2)
{
shtB.appendRow(row);
sht0.getRange(i+1,CopiedColumn).setValue(Utilities.formatDate(new Date(), "GMT-6", "dd/MM/yyyy HH:mm:ss"));
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.