2016-09-09 3 views
0

Google Appsのスクリプト作成には新しく、いくつかのものを検索すると、探しているものとは異なる回答が得られます私はgoogle:アプリスクリプト検索シート、スプレッドシートに検索ボックスを追加する方法を説明しています)。Google Apps Script:1枚のフィールドを検索し、別の場所にコピーします。

私は、生徒のクイズの成績(Googleフォームクイズによって生成されたもの)を含む自動的に生成されたスプレッドシートからマスターグレーディングシート(これらは2つの異なるドキュメント)に成績をコピーするスクリプトを作成しようとしています。私はちょっと混乱しています。なぜなら、私が情報をコピーすることについて見ているほとんどの例は、2つの異なるドキュメントの間でコピーするのではなく、1つのドキュメント内の2つの異なるシート(タブ)からコピーするように見えるからです。各生徒にはログイン名があります。たとえば、john smithはjsmith01です。スプレッドシートの各行は1人の学生に対応しています。たくさんの列がありますが、私は "ログイン"列と "クイズ"列で作業しようとしています。ログイン欄には生徒のログイン番号(ex jsmith01)が表示され、クイズ欄にはクイズグレードが表示されます。あなたはIDによって、スプレッドシートの1を開く必要があり

quizGrades = spreadsheet with results automatically created by quiz form 
masterGrades = spreadsheet that I need to copy quiz grades into 

for curStudent in rows on quizGrades sheet{ 
    studentLogin = login name of curStudent in login column in quizGrades sheet 
    studentGrade = value (quiz grade) for curStudent in quiz column in quizGrades sheet 
    currStudentRow = row where login col. value in masterGrades sheet matches studentLogin 

    copy studentGrade into grade col. in currentStudentRow in masterGrades sheet 
} 

答えて

0

function moveAnswersToOtherSpreadsheet() { 
    var answers,masterGradesSS,quizGradesSS,sheetTabWithAnswers;//Declare variables without assigning a value 

    masterGradesSS = SpreadsheetApp.getActiveSpreadsheet();//spreadsheet with results automatically created by quiz form 
    quizGradesSS = SpreadsheetApp.openById("Put the ID here"); //spreadsheet to copy quiz grades into 

    sheetTabWithAnswers = masterGradesSS.getSheetByName("name here"); 

    //getRange(start row, start column, number of Rows to get, number of Columns to get) 
    answers = sheetTabWithAnswers.getRange(1, 1, sheetTabWithAnswers.getLastRow(), sheetTabWithAnswers.getLastColumn()).getValues(); 
} 
0

私が出始めたとき、私は配列内のソースデータを保持するために使用して:ここで私は何をしようとしているため、いくつかの擬似コードですデータをターゲットシートに繰り返し出力します。

次に、コピー方法in the API documentationが見つかりました。これが役に立ちますようお願いいたします。

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var source = ss.getSheets()[0]; 

var destination = SpreadsheetApp.openById("abc1234567"); 
var destinationSheet = destination.getSheets()[1]; 

var range = source.getRange("B2:D4"); 

// This copies the data in B2:D4 in the source sheet to 
// D4:F6 in the second spreadSheet 
range.copyValuesToRange(destinationSheet, 4, 6, 4, 6); 
+0

こんにちは、これは学生IDを検索するようではありません。私はあるシートから別のシートにコラムをコピーしようとしているだけではありません。生徒IDを1枚から次の生徒IDに合わせて、ソースシートの各IDの対応する成績を、コピー先のシートの同じ生徒IDに対応するセルにコピーする必要があります。生徒は必ずしも同じ順序である必要はなく、ある生徒がソースシートから欠落している可能性もあります。ありがとう! – theShmoo

0

これはおそらく役に立ちます。私は以前に使った3つの機能を作った。スプレッドシート内で検索された用語の行と列の座標を返します。

function searchForStudentId(SPREADSHEET_ID, SHEET_NAME, studentId) { 
    var locatedCells = []; 
    var ss = SpreadsheetApp.openById(SPREADSHEET_ID); 
    var searchLocation = ss.getSheetByName(SHEET_NAME).getDataRange().getValues();   
    //Loops to find the search term. 
     for (var j = 0, jLen = searchLocation.length; j < jLen; j++) { 
      for (var k = 0, kLen = searchLocation.length; k < kLen; k++) { 
       var find = studentId; 
       if (find == searchLocation[j][k]) { 
        locatedCells.push({ 'found': (j + 1) + "," + (k + 1)}); 
       } 
      } 
     } 
    // Logger.log(locatedCells); 
     return(locatedCells) 
    } 


function LocateStudentIdsInSource(){ 
    var SPREADSHEET_ID = "ADD ID" 
    var SHEET_NAME = "Sheet1" 
    var studentId = "1234567" 
    var studentIdSourceLocation = searchForStudentId(SPREADSHEET_ID, SHEET_NAME, studentId) 
    Logger.log(studentIdSourceLocation); 
} 


    function LocateStudentIdsInTarget(){ 
    var SPREADSHEET_ID = "ADD ID" 
    var SHEET_NAME = "Sheet1" 
    var studentId = "1234567" 
    var studentIdTargetLocation = searchForStudentId(SPREADSHEET_ID, SHEET_NAME, studentId) 
    Logger.log(studentIdTargetLocation) 
    } 
関連する問題