1

Stack Overflow의 제 1 질문. 4 개의 개별 시트가있는 Google 스프레드 시트가 있습니다.GAS - GForm 입력 당 스프레드 시트 선택 (Get)

Sheet1은 GForm의 응답입니다. Sheet2,3,4는 동일한 데이터를 가지고 있지만 영어, 타밀어, 힌디어의 3 개 언어로되어 있으며 영어, 타밀어, 힌디어라고 불립니다.

현재 Script1은 Sheet1의 셀 값 날짜를 취하고 Tamil 시트 언어의 데이터와 일치하며 올바른 언어 인 Tamil GDoc과 메일을 병합하여 이메일로 보냅니다.

이제 Form 입력의 evalues4 (라디오 버튼)에 따라 스크립트에서 다른 언어 인 Gsheet (3 중 하나)를 선택하는 방법을 알아낼 수 없습니다.

누군가 나를 알아낼 수 있습니까? 적절한 언어를 선택하십시오. ss.getSheetByName 및 을 사용하는 Gsheet Ghost는 Form 응답 evalues4를 기반으로 DriveApp.getFileById 을 사용합니다.

다음 코드는 하나의 언어를 name/sheetID/DocID로 입력하면 잘 작동합니다.

//Get information from the form and set as variables 
function onFormSubmit(e) 
{ 
var Time = e.values[0]; 
var email = e.values[1]; 
var fog = e.values[2]; 
var mog = e.values[3]; 
var lang = e.values[4]; 
var do_date = e.values[5]; 

//Match chosen date from data sheet & get Row Number 
function findInColumn() { 
var data = do_date; 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet1 = ss.getSheetByName("Tamil"); 
var range = sheet1.getRange(1,1,sheet1.getLastRow(),1); 
var values= range.getValues(); 
var row = 0; 
    while (values[row] && values[row][0] !== data) { 
    row++; 
    } 
    if (values[row][0] === data) 
    return row+1; 
    else 
    return -1; 
} 

//Use above Row number to load in Range, get values, assign to variable cells 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet3 = ss.getSheetByName("Tamil"); 
// Get range of cells in All columns and All rows with entries 
var dataRange = sheet3.getRange(findInColumn(), 1, 1, sheet3.getLastColumn()); 
// Get entries for each row in the Range. 
var data = dataRange.getValues(); 
// Set each value to a unique variable 
    for (i in data) { 
    var cell = data[i]; 

// Get document template, copy it as a new doc with Name and email, and save the id 
var copyId = DriveApp.getFileById("1Nxxxxxxxxxxxxxx2k") 
+0

을 다른 사람을 - 나는 만약을 사용하여, 그것을 같은 주말 해결 (lang) "lang은"var lang = e.values ​​[4] " –

+0

문제의 해결책을 찾으셨습니까? –

답변

1

죄송합니다. 여기서 질문을 저질렀습니다. [: 나는 var에 SSN을 사용하는 대신 var에 SS의, 대신 var에 Sheet3에의 나는 재 작성에 var에 tocopyID 사용 주] 어떻게 ss.getSheetByName "에 대해

//Use above Row number to load in Range, get values, assign to variable cells 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    if (lang === "Tamil"){ 
    var ssn = ss.getSheetByName("Tamil"); 
    var tocopyId = DriveApp.getFileById("1NxxxxTamil"); 
    } 
    else if (lang === "Hindi"){ 
    var ssn = ss.getSheetByName("Hindi"); 
    var tocopyId = DriveApp.getFileById("Hindi"); 
    } 
    else if (lang === "English"){ 
    var ssn = ss.getSheetByName("English"); 
    var tocopyId = DriveApp.getFileById("1NxxxxEnglish"); 
    } 
+0

답변을 수락 한 것으로 표시 할 수 있으므로이 스레드는 해결 된 것으로 나타날 수 있습니다. –

+0

완료, 에티켓과 인내를 통해 나를 산책 주셔서 감사합니다. –

0

올바른 이름을 가진 lang 변수를 사용하여 동일한 시트를 얻을 수 있습니다. 당신은 당신이 원하는 언어 이름으로 설정 속성이

var templateId = PropertiesService.getScriptProperties().getProperty(lang); // where lang = "Tamil" for example 
var copyId = DriveApp.getFileById(templateId); 

:

var sheet1 = ss.getSheetByName(lang); // where lang = "Tamil" for example 

올바른 템플릿을 사용하기 위해, 당신은 같은 Properties하여 템플릿의 ID를 저장할 수있다. 코드로 설정할 수 있습니다.

PropertiesService.getScriptProperties().setProperty('Tamil', '1Nxxxxxxxxxxxxxx2k');