0

특정 Twitter 목록의 트윗과 함께 자동으로 업데이트되는 스프레드 시트가 있습니다. 시트에 조건부 서식을 적용하여 트윗 중 하나 안에 맹세 단어가 있으면 해당 셀을 빨간색으로 강조 표시합니다.조건부 서식이 적용될 때마다 내게 이메일을 보내고 싶습니다.

내가 원하는 것은 조건부 서식이 적용될 때마다 셀 (또는 전체 스프레드 시트)을 전자 메일로 보내는 것입니다. 이것이 가능한가?

또한 스프레드 시트의 내용을 매일 "아카이브"시트에 저장하여 주 시트에 매일 신선한 콘텐츠가 포함되도록하는 방법이 있습니까?

도움 주셔서 감사합니다.

지금까지 "보관 처리"스크립트를 작업 해 왔습니다. 내가 지금까지 가지고 아래 : 그것은 라인 범위 높이를 말한다

function importData() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); //source ss 

var sheet = ss.getSheetByName("Twitter"); //opens the sheet with your source data 

var values = sheet.getRange("A:G").getValues(); //gets needed values 

var ts = SpreadsheetApp.openById("1g5XaIycy69a3T2YcWhcbBy0hYrxSfoEEz8c4-zP63O8"); //target ss -  paste your key 

ts.getSheetByName("Archives").getRange("A:G").setValues(values);} 

(11)는 잘못된 것입니다.

맹세 한 단어가 사용되면 전자 메일을 받기 위해 사용하려는 코드 조각입니다. 나는 끝내고있는 것처럼 느껴진다. 그러나 아직 거기에 없다.

function onEdit(event) 
{ 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = SpreadsheetApp.getActiveSheet(); 

var cell = ss.getActiveCell(); 
var range = sheet.getRange(cell.getRow(),1,1,sheet.getDataRange().getLastColumn()); 
var note = cell.getBackground() 

var email = "[email protected]"; 
var subject = "Notice of possible inappropriate tweet"; 
message = cell.getValue(); 

if(message.contains ("piss")) { 
range.setBackgroundRGB(255, 0, 0); 
MailApp.sendEmail(email, subject, message); 
} 
}; 
+0

조건부 서식을 사용하면 조건부 서식을 트리거하는 것과 동일한 조건을 코드에서 확인하는 것이 더 쉽다고 생각합니다. 예를 들어, Worksheet_Change 이벤트에서 변경된 셀에 맹목적 단어가 포함되어 있는지 확인하십시오. –

답변

1

첫 번째 질문에 답하기 위해 의견에 Dougs 제안에 동의합니다. swearword를 탐지하기 위해 사용하는 방아쇠는 조건부 서식 변경을 기다리는 대신 전자 메일로 보내기위한 함수를 호출하는 가장 좋은 장소입니다.

데이터를 보관하는 방법에 대한 질문과 관련하여 범위를 가져 와서 시트 등으로 복사하는 일은 너무 힘들어집니다. 'copyTo()' operation은 전체 시트를 복사하기 때문에 여기에 친구입니다. 조건부 서식을 유지하면서 다른 스프레드 시트로

function importData() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); //source ss 
    var sheet = ss.getSheetByName("Twitter"); //opens the sheet with your source data 
    var ts = SpreadsheetApp.openById('SHEET ID');//Opens destination spreadsheet 
    sheet.copyTo(ts);//Copy the data to the destination sheet. 
    sheet.clear();//Clear the source sheet. 

    //Past this point it's optional, and only if you want to rename the destination sheet. 
    ts.getSheetByName("Copy of Twitter").activate();//Get the destination sheet by name. 
    var date = new Date().getDate();//Random variable for the sheets new name 
    ts.renameActiveSheet(date);//Set the new sheets name. 
} 

이 소스 시트를 엽니 다, 당신의 선택의 새로운 스프레드 시트에 데이터를 복사하고 데이터의 소스 시트를 삭제 :

여기이 가능하게 일할 수있는 방법의 샘플입니다. 선택 사항으로, 대상 시트의 이름을 원하는 변수의 이름으로 바꾼 몇 줄을 추가하여 복사 시점을 쉽게 이해할 수 없도록했습니다 (날짜 또는 시간을 제안하지만 실제로 원하는 것이 될 수 있음).

+0

copyTo() 연산에 완벽! 정말 감사! 내가 보내 자마자 나에게 이메일로 전송되는 방아쇠를 얻으려는 시도에 대한 원본 게시물에 코드 스 니펫을 추가하고 있습니다. 여전히 문제가 있습니다. : –

+0

@ TonyAdragna 나는 도움이 되었기 때문에 기쁘다. 당신이 대답을 유용하다고 생각하면 인터넷 포인트를 얻을 수 있도록 받아 들일 수있다. 또한, 당신이 메일을 발동시킬 곳을 정확히 고민하고 있다면, 새 게시물에서 저주 코드를 감지하면 도움을 줄 수 있습니다. – HDCerberus