0

私はGoogleの最初のGoogleアプリケーションスクリプトをGoogleのシートに書いており、それが開く可能性について非常に興奮しています。ただし、スプレッドシートの異なるタブ間や独立したスプレッドシート間でデータを移動する(スプレッドシートIDが異なる)など、いくつかのことを把握しようとしています。GoogleスプレッドシートスクリプトがgetUser()のメールをキャプチャしないのはなぜですか?

しかし私の心配は、私のスクリプトはタイムスタンプをキャプチャしていますが、私はまた、ユーザーの電子メールを記録したいと思います。私は、電子メールをキャプチャできるかどうかを判断する複雑な基準があることを文書で読み取っています。その基準は何ですか?奇妙なことに、最初はコードをテストしていたので、自分の電子メールがキャプチャされていたのですが、ケースの約50%にすぎません。私はここで何が起こっているか完全に理解しているのか分からないのですか?

マイコード:

function onEdit(e){ 
    // Set a comment on the edited cell to indicate when it was changed. 
    var range = e.range; 
    var activeSheet = e.source.getActiveSheet(); 
    range.setNote('Last modified: ' + new Date() + new Date().toLocaleTimeString() + ' sheet: ' + activeSheet.getName()); 
    if (activeSheet.getName() == "KYCEntrySheet"){ 
    var r = e.source.getActiveCell(); 
    if(r.getColumn() == 10) { //Any changes within this column set the date below and the email on the 2nd call 
     //if(r.offset(0, 1).getValue() === '') //is empty? 
     r.offset(0, 5).setValue(new Date().toLocaleTimeString());//will only put date, format "123/Date and time" if time needed 
     //if(r.offset(0, 2).getValue() === '') //is empty? 
     r.offset(0, 9).setValue(Session.getUser());//inserts current users email 
    }}} 

ありがとう!

答えて

1

電子メールを明示的に許可していないユーザーの電子メールを取得することはできません。たとえば、誰でもスプレッドシートを共有して編集し、onEditトリガーを使用してメールを目に見えない形で収集するとします。 Googleはそのようなことを起こさせません。

Googleは「複雑な基準」が何であるか教えたくないので、わからない。私の理解では、簡単なトリガーonEditはあなたの個人情報にアクセスするべきではありません。インストール可能なトリガー([リソース]メニューから作成するトリガー)は、個人情報にはアクセスできますが、他のものにはアクセスできません。あなたはそれらの両方を混在させることが可能です。 、あなたがしたいシートのハンドルを取得そこに範囲を選択して、データをコピーするsource.copyTo(target)を使用するには、スプレッドシート

の異なるタブを使用するgetSheetByName()の間でデータを移動する

(異なるスプレッドシートIdsに)独立したスプレッドシートを横切る

使用range.getValues()ソーススプレッドシートとターゲットスプレッドシートでtarget.setValues()います。後者を扱うにはSpreadsheetApp.openByIdが必要です。

関連する問題