문제

Google 스프레드시트에서 나는 시트 형태로 응답하고,오른쪽에 양식을 열이 나는 열 수식을 사용하는 형태로 데이터를 위한 기능입니다.

에서 시작했던 수식이 확장 행 그래서 그들은 새로운 양식을 제출하지만,을 발견하는 새로운 형태로 제출 것입 취소 행아웃:(.

대신 수동으로 확장을 공식 후 각 제출을 설치 앤드류 스틸맨의 copyDown() 스크립트;그것이 무엇을 복사래식한 후에 스크립트는 제출됩니다.

지금 하는 스크립트 작동될 때 수동으로 실행하지만,때 나는 설정된 트리거에 양식을 제출하는 그것을 복사했다는 공식에서는트 에는 모든 다른 시트 스프레드시트에서.나는 원하지 않는 부작용,그것이 sns 스프레드시트니다.:((

무엇을 생각하는 스크립트 편집도 작품에서 하나의 형태로 응답 시트가 아닌 모든 장입니다.지하는 방법을 알고 있습니다.

시트의 이름을 내가 원하는 그것을 실행하에서는"요청",그리고 gid=8.

를 편집하려면 어떻게 해야 하는 이 스크립트를 위해서만 작동 하나 시트?

도움이 되었습니까?

해결책

코드에서 실행하는 특정 시트를 사용하여.getSheetByName()메소드가 있습니다.예를 들어:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var reqSh = ss.getSheetByName('Requests');

거기에 또 다른 방법으로 그는 편이 더 나을 것 같습니다.당신이 시도할 수 있습 유지하는 하나의 장을 순수하게 형태로 제출하고 사용 arrayformula 에서 두 번째 장에 복사하는 값에서 첫 번째 시트 같은 범위에서 두 번째입니다.

=ARRAYFORMULA(요청'!A1:H)는 복사본을 열을 H.

나는 당신과 같은 문제가와 이 솔루션입니다.나는 공식에서 두 번째 장에서 오른쪽에있는 열의 범위 및 복사에서 아래로 정상적인 방법입니다.공식 라고 복사한 범위에서 두 번째로 장입니다.그것은 일입니다.

내지는 못했지만 아이디어와 자신-나는 그것에 의해 제안되었다는 사람에 구글 스프레드시트에 포럼도 있습니다.나는 당신을 제공해야하는 게시물에 대한 링크를 하지만 나만 보았고 저는 그것을 찾을 수 없습니다.

다른 팁

에서 당신의 코드(댓글 코드)

 var sheets = ss.getSheets() [8]; // you choose sheet [8]
 var cellAddresses = new Object();
  for (var i=0; i<sheets.length; i++) { // but you enter a for loop that adresses every sheet in turn...
    var range = sheets[i].getDataRange();

당신은 단순히 억제 이 루프만 사용하시트 번호는 당신이 원하는 것을 진행...

가장 간단한 방법이 될 수 있을 하는 이를 다음과 같이 설명합니다:

 var i = 8
 var sheets = ss.getSheets() [i];
 var cellAddresses = new Object();
    var range = sheets[i].getDataRange();
  ...

의 끝에서 반복을 삭제합}적 for 루프

편집 :새 코드는 다음과 같이해야한다:

function copydown() {
  setCopyDownUid();
  setCopyDownSid();
  logCopyDown();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets() [8];
  var cellAddresses = new Object();
  var i=8
//  for (var i=0; i<sheets.length; i++) {
    var range = sheets[i].getDataRange();
    var lastRow = range.getLastRow();
    var values = range.getValues();
    for (var j=0; j<values.length; j++) {
      for (var k=0; k<values[j].length; k++) {
        var test = values[j][k].toString();
        var start = test.indexOf("copydown");
          if (start == 0) {
            start = start+10;
            var end = test.length-2;
            var length = end-start;
            var value = test.substr(start, length);
            var col = k+1;
            var nextRow = j+2;
            var numRows = lastRow-(nextRow-1);
            if (numRows>0) {
              var destRange = sheets[i].getRange(nextRow, col, numRows, 1);
              destRange.clear();
              var newLastRow = sheets[i].getDataRange().getLastRow();
              var newNumRows = newLastRow-(nextRow-1);
              var newDestRange = sheets[i].getRange(nextRow, col, newNumRows, 1);
              var cell = sheets[i].getRange(nextRow-1, col);
              cell.setFormula(value);
              cell.copyTo(newDestRange);
            }
            var cellAddress = cell.getA1Notation();
            cellAddresses[cellAddress] = test;
          }
      }
    }
    Utilities.sleep(500);
    resetCellValues(cellAddresses, sheets[i]);
  }
//}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top