2016-08-20 11 views
0

私はこのシートをコピーして、そのコピーを電子メールでxslxファイルとして送信するためにこのスクリプトを使用しています。しかし、私は特定の人々に設定している場合、それは実行されますが、ページ上のデータの代わりにValue#を与えます。私が送信しようとしているページは、データをシートにプルするクエリーのインポート範囲式です。どんな助けでも大歓迎です。スクリプトで共有する

enter code herefunction emailExcel() { 

    var mailTo, subject, body, id, sheetNum, sh, sourceSS, copySS, file, url,token, response; 


    mailTo = '[email protected]'; 
    subject = 'subject'; 
    body = 'text_in_body'; 
    id = '1eI-p0nodA4zqP3fsxP5P6iR6gyvSIGRZDMaQSGkb2ds'; 
    sheetNum = 2; 

    sourceSS = SpreadsheetApp.openById(id); 
    copySS = sourceSS.copy('copy of ' + sourceSS.getName()); 
    sh = copySS.getSheets()[sheetNum]; 
    sh.getDataRange().setValues(sh.getDataRange().getDisplayValues()) 
    copySS.getSheets() 
    .forEach(function (sh, i) { 
     if(i != sheetNum) copySS.deleteSheet(sh); 
    }) 

    file = Drive.Files.get(copySS.getId()); 
    url = file.exportLinks[MimeType.MICROSOFT_EXCEL]; 
    token = ScriptApp.getOAuthToken(); 
    response = UrlFetchApp.fetch(url, { 
    headers: { 
     'Authorization': 'Bearer ' + token 
    } 
    }); 

    MailApp.sendEmail(mailTo, subject, body, { 
    attachments: [response.getBlob() 
     .setName('TESTING.xlsx')] 
    }); 

    DriveApp.getFileById(copySS.getId()).setTrashed(true); 
    } 

答えて

0

Class Fileに与えられたsetSharing(accessType, permissionType)メソッドを追加しようとすると、特定の人々にドライブのファイルを共有することができます。

Working with enumsで述べたように、

Driveサービスは、ファイルまたはフォルダへのアクセス権を持つユーザーを決定する列挙型アクセス許可を使用しています。

のでDriveAppにファイルやフォルダにアクセスするには、明示的にアクセス

  • Accessを与えられた任意の個々のユーザーのほか、ファイルやフォルダにアクセスできるユーザーを決定するために、次の列挙型を追加する必要があります
  • Permission

本当に与えられたドキュメンテーションを通過しようとすると便利でしょう。

0

簡単な方法で新しいスプレッドシートを作成しました。スクリプトを使用してそのスプレッドシートにインポートしています。新しいドキュメントにはデータがあり、今すぐ完全に動作しています。

関連する問題