행의 아이콘을 사용하여 행의 셀에서 다른 시트로 텍스트를 복사하는 스크립트 사용

Jesper Homann

내 이전 게시물에서 ( Google 시트에서 아이콘을 클릭하여 한 셀에서 다른 시트로 셀 값 자동 복사 ) 이제 다른 사람이 나를 도와 주었으면 하는 새로운 문제가 발생했습니다.

익명의 사용자가 A 열의 아이콘을 클릭 할 수 있고 B 열과 C 열의 데이터가 타임 스탬프를 포함하여 sheet1에서 sheet2로 이동되는 스프레드 시트를 만들려고합니다.

여태까지는 그런대로 잘됐다. 이 훌륭한 커뮤니티의 도움으로 실행되고 있습니다. 이 스크립트를 사용하고 있습니다.

function copyPasteValue2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Ark1');
  var r = s.getRange('b2');
  var v = r.getValue();
  var a = s.getRange('c2');
  var d = a.getValue();
  var s2 = ss.getSheetByName('Ark2');
  var timeZone = ss.getSpreadsheetTimeZone();
  var t = Utilities.formatDate(new Date(), timeZone, 'HH:mm:ss dd-MM-yyyy');
  s2.getRange('A2:C2').setValues([[t,v,d]]);
}

이제이 시트를 확장하고이 기능을 가진 100 개 이상의 항목을 포함하고 있습니다. A 열의 아이콘을 클릭하고 C와 B의 데이터를 시트 2로 이동합니다.

내 질문은 다른 100 개의 스크립트를 만들지 않고 어떻게 이것을 달성 할 수 있습니까? 여기에서 천천히 진행하면서 지금까지 내 검색이 해결책으로 반환되지 않았습니다.

여기에 도움이되는 테스트 시트를 만들었습니다 : https://docs.google.com/spreadsheets/d/1z5TGWp3N002z0GNts4NRyspkjXcsN52rxPtx8Pu9D70/edit#gid=

Tanaike
  • 스프레드 시트에서 이미지를 클릭하여 스크립트를 실행하려고합니다.
  • "A"열에 이미지를 넣으려고합니다. 이 경우 많은 이미지를 넣고 싶습니다.
  • 간단한 스크립트를 사용하여이를 달성하고자합니다.

문제 및 해결 방법 :

  • 안타깝게도 현재 단계에서 시트의 이미지를 클릭하여 스크립트를 실행하면 스크립트가 이미지가 클릭 된 위치를 알 수 없습니다. 이로 인해 안타깝게도 귀하의 경우 이미지를 클릭하여 스크립트를 실행하려는 경우 각 이미지에 다른 기능 이름을 할당해야합니다.
  • 또한 이미지를 클릭하여 스크립트를 실행하면 전역 변수가 실행되기 전에 함수가 검색된 것 같습니다. 이로 인해 스크립트를 사용하여 자동으로 기능을 설치할 수 없습니다.

위 상황에서 목표를 달성하기 위해 다음 2 가지 패턴을 제안하고자합니다.

패턴 1 :

이 패턴에서는 기능이 할당 된 이미지가 사용됩니다. 이 경우, 샘플, 그것은 5 개 화상이 시트에 넣어 것을 전제로 Ark1하고, 각각의 이미지와 같은 기능 이름 갖고 copyPasteValue2, copyPasteValue3등등을.

샘플 스크립트 :

샘플 스크립트는 다음과 같습니다. 다음 스크립트를 복사하여 스크립트 편집기에 붙여 넣으십시오.

function main(row) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Ark1');
  var [v, d] = s.getRange(`B${row}:C${row}`).getValues()[0];
  var s2 = ss.getSheetByName('Ark2');
  var timeZone = ss.getSpreadsheetTimeZone();
  var t = Utilities.formatDate(new Date(), timeZone, 'HH:mm:ss dd-MM-yyyy');
  s2.getRange(`A${row}:C${row}`).setValues([[t,v,d]]);
}

const copyPasteValue2 = () => main(2);
const copyPasteValue3 = () => main(3);
const copyPasteValue4 = () => main(4);
const copyPasteValue5 = () => main(5);
const copyPasteValue6 = () => main(6);
  • 이 스크립트에서 함수명이있는 이미지를 copyPasteValue2클릭하면 2이미지의 행인 main(). 이것에 의해 copyPasteValue2행 2로 실행할 수 있습니다.

노트 :

  • 에 대해 const copyPasteValue2 = () => main(2); const copyPasteValue3 = () => main(3); ,,,형식은 일정합니다. 예를 들어 이러한 스크립트를 텍스트 파일로 생성 한 다음 스크립트 편집기에 복사하여 붙여 넣을 수도 있습니다.
  • 스크립트를 사용하여 "A"열에 이미지를 삽입하려면 다음 기능을 사용할 수 있습니다. 이것을 사용할 때 Google 드라이브에 이미지의 파일 ID를 설정하십시오. 그리고 설정하십시오 sheetNamemax.

    function insertImages() {
      var id = "###";  // Please set the file ID of the image.
      var sheetName = "Sheet1"; // Please set the sheet name.
      var max = 5;  // Please set the number of images you want to put.
    
      var blob = DriveApp.getFileById(id).getBlob();
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName(sheetName);
      sheet.setRowHeights(2, max, 64).setColumnWidth(1, 64);
      for (var i = 0; i < max; i++) {
        sheet.insertImage(blob, 1, i + 2).setHeight(64).setWidth(64).assignScript("copyPasteValue" + (i + 2));
      }
    }
    

패턴 2 :

이 패턴에서는 이미지 대신 체크 박스를 사용하는 것을 제안하고 싶습니다. 이 경우 OnEdit 이벤트 트리거를 이용하여 체크 박스를 클릭하면 클릭 된 체크 박스의 좌표를 알 수 있습니다. 이로써 스크립트는 패턴 1보다 간단해질 수 있습니다.

샘플 스크립트 :

function main(row) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Ark1');
  var [v, d] = s.getRange(`B${row}:C${row}`).getValues()[0];
  var s2 = ss.getSheetByName('Ark2');
  var timeZone = ss.getSpreadsheetTimeZone();
  var t = Utilities.formatDate(new Date(), timeZone, 'HH:mm:ss dd-MM-yyyy');
  s2.getRange(`A${row}:C${row}`).setValues([[t,v,d]]);
}

function onEdit(e) {
  const range = e.range;
  if (range.getSheet().getSheetName() == "Ark1" && e.value == "TRUE") {
    main(range.rowStart);
    range.uncheck();
  }
}
  • 위의 스크립트에서 시트의 "A"열에 Ark1확인란이 있다고 가정합니다 .
  • 이 경우 단순 트리거를 사용하여 스크립트를 실행할 수 있습니다.

노트 :

  • 이 경우 스크립트 편집기에서 V8을 활성화하십시오.

참조 :

내가 당신의 질문을 오해하고 이것이 당신이 원하는 방향이 아니라면 사과드립니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Jython 스크립트에서 sed를 사용하여 전체 행을 텍스트 파일의 변수로 대체

분류에서Dev

한 시트의 여러 행 및 열에서 다른 시트로 셀 값을 복사하는 방법

분류에서Dev

PHP 스크립트를 사용하여 데이터베이스 열의 내용을 다른 열에 복제

분류에서Dev

시트의 셀에서 다른 시트의 사용 가능한 다음 행으로 데이터 복사

분류에서Dev

IF __name__ == "__main__"문을 사용하여 다른 Python 스크립트에서 Python 스크립트 실행

분류에서Dev

VBA를 사용하여 특정 텍스트를 다른 시트에 포함하는 경우 특정 행을 복사하고 싶습니다.

분류에서Dev

Yarn을 사용하여 다른 스크립트에서 하나의 스크립트 호출

분류에서Dev

다른 타이프 스크립트에서 타이프 스크립트의 함수를 사용하는 방법

분류에서Dev

VBA를 사용하여 한 시트에서 다른 시트로 행 복사

분류에서Dev

다른 행의 셀을 사용하여 계산 세트 요약

분류에서Dev

워크 시트의 모든 열에있는 모든 행을 반복하고 셀을 비교하여 행을 텍스트 파일에 복사하는 매크로

분류에서Dev

한 워크 시트에서 다른 워크 시트로 올바른 행으로 셀을 복사하는 방법

분류에서Dev

배치 스크립트를 사용하여 텍스트 파일의 모든 행의 특정 열에 텍스트를 작성합니다.

분류에서Dev

Python 스크립팅을 사용하여 XML에서 다른 요소의 텍스트 또는 속성을 기반으로 요소의 텍스트 가져 오기

분류에서Dev

루프를 사용하여 병합되지 않은 셀을 한 워크 시트에서 다른 워크 시트의 병합 된 셀로 복사

분류에서Dev

Jenkins 스크립트 콘솔을 사용하여 유료 프로젝트에 "다른 프로젝트의 빌드 환경 사용"을 활성화하는 방법

분류에서Dev

VBA 매크로 스크립트 : vba 매크로를 사용하여 시트 1의 열에서 고유 값을 찾아 시트 2로 복사

분류에서Dev

Excel : VBA를 사용하여 다른 시트의 표에 행 복사

분류에서Dev

다른 워크 시트 (탭)에있는 다른 셀의 값을 사용하여 Excel에서 셀 참조

분류에서Dev

VBA를 사용하여 한 시트에서 다른 시트로 전체 행을 복사 할 수 없습니다.

분류에서Dev

CSS 클래스의 스타일을 사용하여 서식있는 텍스트를 클립 보드에 복사

분류에서Dev

확인란을 사용하여 동일한 시트의 한 행에서 다른 행으로 데이터 이동

분류에서Dev

Android Webview를 사용하여 다른 라이브러리 / 모듈에 의존하는 자바 스크립트를 실행하는 방법

분류에서Dev

bash / shell을 사용하여 스크립트의 일부를 동시에 실행하고 다음 부분을 실행하는 방법은 무엇입니까?

분류에서Dev

둘 이상의 프로세서를 사용하여 PHP 스크립트를 실행하는 방법

분류에서Dev

자바 스크립트에서 CSS를 사용하여 (하나의 div) 텍스트의 다른 부분을 채색

분류에서Dev

PowerShell을 사용하여 스크립트 데이터를 2 개의 텍스트 파일로 동시에 내보내고 싶습니다.

분류에서Dev

다른 파이썬 스크립트에 "사용자 입력"을 제공하는 하나의 Python 스크립트

분류에서Dev

실행 전용으로 저장된 사과 스크립트를 실행하여 아이콘이 Dock에 표시되지 않도록합니다.

Related 관련 기사

  1. 1

    Jython 스크립트에서 sed를 사용하여 전체 행을 텍스트 파일의 변수로 대체

  2. 2

    한 시트의 여러 행 및 열에서 다른 시트로 셀 값을 복사하는 방법

  3. 3

    PHP 스크립트를 사용하여 데이터베이스 열의 내용을 다른 열에 복제

  4. 4

    시트의 셀에서 다른 시트의 사용 가능한 다음 행으로 데이터 복사

  5. 5

    IF __name__ == "__main__"문을 사용하여 다른 Python 스크립트에서 Python 스크립트 실행

  6. 6

    VBA를 사용하여 특정 텍스트를 다른 시트에 포함하는 경우 특정 행을 복사하고 싶습니다.

  7. 7

    Yarn을 사용하여 다른 스크립트에서 하나의 스크립트 호출

  8. 8

    다른 타이프 스크립트에서 타이프 스크립트의 함수를 사용하는 방법

  9. 9

    VBA를 사용하여 한 시트에서 다른 시트로 행 복사

  10. 10

    다른 행의 셀을 사용하여 계산 세트 요약

  11. 11

    워크 시트의 모든 열에있는 모든 행을 반복하고 셀을 비교하여 행을 텍스트 파일에 복사하는 매크로

  12. 12

    한 워크 시트에서 다른 워크 시트로 올바른 행으로 셀을 복사하는 방법

  13. 13

    배치 스크립트를 사용하여 텍스트 파일의 모든 행의 특정 열에 텍스트를 작성합니다.

  14. 14

    Python 스크립팅을 사용하여 XML에서 다른 요소의 텍스트 또는 속성을 기반으로 요소의 텍스트 가져 오기

  15. 15

    루프를 사용하여 병합되지 않은 셀을 한 워크 시트에서 다른 워크 시트의 병합 된 셀로 복사

  16. 16

    Jenkins 스크립트 콘솔을 사용하여 유료 프로젝트에 "다른 프로젝트의 빌드 환경 사용"을 활성화하는 방법

  17. 17

    VBA 매크로 스크립트 : vba 매크로를 사용하여 시트 1의 열에서 고유 값을 찾아 시트 2로 복사

  18. 18

    Excel : VBA를 사용하여 다른 시트의 표에 행 복사

  19. 19

    다른 워크 시트 (탭)에있는 다른 셀의 값을 사용하여 Excel에서 셀 참조

  20. 20

    VBA를 사용하여 한 시트에서 다른 시트로 전체 행을 복사 할 수 없습니다.

  21. 21

    CSS 클래스의 스타일을 사용하여 서식있는 텍스트를 클립 보드에 복사

  22. 22

    확인란을 사용하여 동일한 시트의 한 행에서 다른 행으로 데이터 이동

  23. 23

    Android Webview를 사용하여 다른 라이브러리 / 모듈에 의존하는 자바 스크립트를 실행하는 방법

  24. 24

    bash / shell을 사용하여 스크립트의 일부를 동시에 실행하고 다음 부분을 실행하는 방법은 무엇입니까?

  25. 25

    둘 이상의 프로세서를 사용하여 PHP 스크립트를 실행하는 방법

  26. 26

    자바 스크립트에서 CSS를 사용하여 (하나의 div) 텍스트의 다른 부분을 채색

  27. 27

    PowerShell을 사용하여 스크립트 데이터를 2 개의 텍스트 파일로 동시에 내보내고 싶습니다.

  28. 28

    다른 파이썬 스크립트에 "사용자 입력"을 제공하는 하나의 Python 스크립트

  29. 29

    실행 전용으로 저장된 사과 스크립트를 실행하여 아이콘이 Dock에 표시되지 않도록합니다.

뜨겁다태그

보관