以下で説明するアクションを実行するスクリプトの作成に取り組んでいます。これまでのところ、最初の 2 つの部分を機能させることができました。いくつかの応答フォーラムを確認し、提案を試みましたが、成功しませんでした。
必要なスクリプト フロー: スプレッドシート フォームから送信されたフォームは、フィールドに入力します: タイムスタンプ ユーザー名 (送信時に収集された電子メール) 学生の成績介入計画 コア リーディング/数学チーム (電子メール リスト)
1 スクリプトは onFormSubmit を実行し、テンプレート ドキュメントのコピーを作成し、その新しいコピーの名前をフォームで送信された e.value "student" に変更します。
2 次に、ドキュメント内の選択されたテキスト文字列を、フォームで送信された値に置き換えます。
3 編集者を新しいドキュメントに追加し、必要な指示を含む通知を送信します
4 イベントを作成します (提出日から 1 週間)。イベントの詳細には、チーム メンバーが入力を完了するための指示と共有ドキュメントへのリンクが含まれます。イベントの招待状をメーリング リストに送信します。
これまでの作業スクリプトは次のとおりです。
function formSubmitValues(e) {
var timeStamp = e.values[0];
var userEmail = e.values[1];
var student = e.values[2];
var grade = e.values[3];
var conern = e.values[4];
var readingCore = e.values[5];
var mathCore = e.values[6];
var interventions = e.values[7];
var team = e.values[8].toString(); // "just to be sure"..Henrique says add .toString this allowed the replaceText part to work
//Makes copy of template document and renames
var tempID = ("1Rq0pDAnuGNfL6W3GB0ZuLeWM2uYzHpKzoyxoXlwjtgE") // use document ID from Template Document
var copyId = DocsList
.getFileById(tempID)
.makeCopy(student + " Initial Referral") // names new copy as student's name
.getId();
// trying to add editors to new document using email list generated in form submit value of "team"
DocsList.getFileById(copyId).addEditors([team]);
// replaces text within template with selected fields from formSubmitValues
var doc = DocumentApp.openById(copyId)
var body = doc.getActiveSection();
body.replaceText("%STUDENT%", student);
body.replaceText("%DATE%", timeStamp);
body.replaceText("%TEACHER%", userEmail);
body.replaceText("%TEAM%", team);
return doc;
}
報告された問題の回答: 彼らの発言は次のとおりです: 「この関数は次のような配列または文字列を取ります:DocsList.getFileById(copyId).addEditors(['parent@domain.com', 'parent2@domain.com']);
このようなスクリプトにメールを直接入力してみましたが、うまくいきました。したがって、私の問題は 'addEditors
メソッドではなく、フォームから送信された電子メールを正しく渡すことにあります。これを行う方法について何か提案はありますか?
.toString() を使用するかどうか、および .Split(',') を使用するすべての組み合わせであると思われるものを試しました。
RE-DEFINE PROBLEM :したがって、e.values フォームの送信から電子メールがどのように渡されるかの問題です。
ここに私がいるところです: メールをスクリプトに直接入力すると:うまくいきます (スクリプト内のメソッドを最後ではなく
直後に.addEditors(['parent@domain.com', 'email2@domain.net', 'email3@gmail.com'])
移動する必要がありました)。そして残りのスクリプトを実行します。注: 理解できない部分の 1 つは、一重引用符、つまり 'email' です。これらはスクリプトに入力する必要がありますが、実行時に Transcript に表示されません。フォーム内の電子メールの周りに配置しようとしましたが、Transcript に表示され、とにかく実行されません。addEditors
.makeCopy
File.addEditors([[parent@domain.com, email2@domain.net]])
スクリプトは次のようになります。
var tempID = ("1Rq0pDAnuGNfL6W3GB0ZuLeWM2uYzHpKzoyxoXlwjtgE") // use document ID from Template Document
var copyId = DocsList
.getFileById(tempID)
.makeCopy(student + " - TestingCopy") // names new copy as student's name + text
.addEditors([team.split(',')])
.getId();
しかし、var team
with または withoutを使用すると、.split(',')
機能しません。しかし、Transcript では次のように表示
されます。File.addEditors([[rreynolds@domain.net, parent@domain.com]])
これは、機能する場合と同じように見えますが、Transcript で最後に表示されるものであり、エディターはドキュメントに追加されず、スクリプトは終了しません。
私は明らかにここで何かを理解していません。addEditors メソッドが必要とする方法で、チーム e.values 内の電子メールを処理する方法はありますか? スプレッドシートのセルでは、CSV として表示されます。つまり、rreynolds@domain.net、parent@domain.com などです。一度に 1 つずつ読み取る必要がありますか。
私は多くのことを学んでおり、皆さんの助けに感謝しています。すべてのコメントで混乱して申し訳ありませんが、このフォーラムの問題に対処する正しい方法がわかりません. たとえば、元のスクリプトに戻って編集して現在のバージョンを表示するか、別の場所に追加する必要がありますか? 他の人が簡単にフォローできるように、会話の流れを維持しようとしています-ありがとうロブ