2016-05-10 7 views
1

現在、シートを取得してPDFに変換し、夜間にメールアドレスにメールで送信するスクリプトを実行しています。私は3つの別々のスプレッドシートでこれをやっています。各スプレッドシートで個別に実行する代わりに、各スプレッドシートを呼び出す必要があるかどうかを確認し、スクリプトを1回実行してすべてのPDFを1つの電子メールに添付してみたかったのです。それ自体はすごく効果的ですが、1つのスプレッドシートにその機能を一度実行させ、他のスプレッドシートも組み込むことができればそれは意味があると思います。どんな方向にも役立つありがとう!複数のスプレッドシート(​​Googleグーグルシート)でスクリプトを実行

私が使用しているスクリプトが

function PDFtoEmail() { 
    var email = "[email protected]"; 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    SpreadsheetApp.setActiveSheet(ss.getSheetByName('Schedule 1')); 
    var sheet = ss.getActiveSheet(); 
    var subject = "Nightly Scheduled PDF"; 
    var body = ""; 
    var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId()); 
    var url_ext = 'exportFormat=pdf&format=pdf' 
    + '&size=letter' 
    + '&portrait=true' 
    + '&fitw=true&source=labnol'  
    + '&sheetnames=false&printtitle=false' 
    + '&pagenumbers=false&gridlines=false' 
    + '&fzr=true' 
    + '&gid='; 

    var token = ScriptApp.getOAuthToken(); 
    var sheets = ss.getSheets(); 
    var PDFtoEmail = []; 
    for(var i = 0; i < 3; i++){ 
     var response = UrlFetchApp.fetch(url + url_ext + sheets[i].getSheetId(), { 
headers: { 
    'Authorization': 'Bearer ' + token 
} 
}); 
    PDFtoEmail[i] = response.getBlob().setName("Schedule.pdf"); 
} 
if (MailApp.getRemainingDailyQuota() > 0) 
GmailApp.sendEmail(email, subject, body, { 
    attachments:PDFtoEmail, 
}); 

}

+1

はちょうどそのファイルからあなたのための組み合わせを行い、奇数SpreadsheetApp.openById(SSID) – Gerneio

+1

に見て、または単一シートのファイルを持っている場合があります。 – Jonathon

+0

別のApps Scriptを作成して、3つのスプレッドシートすべてを呼び出しました。ありがとうございました! – User125

答えて

2

SpreadsheetApp.openByUrl()を次のようにある開くことができます(スクリプトで使用するために、彼らは別のウィンドウで開きません)であるもの以外のスプレッドシート現在アクティブです。 openByIDも同様です。

var sheets = [firstsheeturl, secondsheeturl,thirdsheeturl]; 
    for(var i = 0; i < sheets.length; i++){ 
    var ss = SpreadsheetApp.openByUrl(sheets[i]); 
    //code to do on all three sheets 
    } 
+0

私はすでに上記のヘルプで問題を解決しましたが、正しいのでこれを答えとしてマークします – User125

関連する問題