لا يُسمح بتنفيذ SendEmail () من وظيفة مخصصة ، ولكن موافق في محرر البرنامج النصي

StackOverflow https://stackoverflow.com/questions/19840894

سؤال

لقد كنت أحاول إيجاد طريقة لإرسال صف واحد من البيانات إلى عنوان بريد إلكتروني معين في جدول بيانات "Live/Running" الذي أستخدمه في مجال بلدي ، لتتبع برامج تشغيل الشاحنات وأرقام التقاطهم. تمكنت من تجميع هذا القليل من التعليمات البرمجية باستخدام محرر Script Google Apps المتوفر في الأوراق:

function sendEmail()
{
   var sheet = SpreadsheetApp.getActiveSheet();
   var activeRow = sheet.getActiveCell().getRow();
   var cellID = "H" + activeRow;    
   var dataRange = sheet.getRange(activeRow, 1, 1, 6);
   var EMAIL_SENT = "EMAIL_SENT";
   var data = dataRange.getValues();
   Logger.log(data[0][0]);

   var emailAddress = usercellnum@carrier.net;
   var message = data;
   var subject = "CG-PU#";
   var emailSent = sheet.getRange(cellID).getValue();

   if (emailSent != "EMAIL_SENT")
   {
     MailApp.sendEmail(emailAddress, subject, message);
     var cell = sheet.getRange(cellID);
     cell.setValue(EMAIL_SENT);
   }
  }
SpreadsheetApp.flush();  
}

بأي طريقة يمكنني من خلالها استدعاء الوظيفة من خلية في جدول البيانات الخاص بي مثل =sendEmail() ويجب أن ترسل المعلومات من الصف النشط فقط ، ثم العلم هذا الصف باسم EMAIL_SENT لذلك أنا لا أفعل ذلك مرة أخرى.

يتم تشغيل البرنامج النصي بشكل مثالي إذا قمت بتشغيله من محرر البرنامج النصي الداخلي ، ورمز البريد الإلكتروني ، ولكن إذا حاولت تشغيله من ورقة الانتشار نفسها ، فأنا أحصل على الرسالة:

خطأ: ليس لديك إذن لاتصال SendEmail (السطر 19 ، ملف "CPS_SENDEMAIL.GS").

أي مساعدة في هذا هو موضع تقدير كبير! سيساعد ذلك على منع المستخدم الخاص بي من العودة إلى MS Excel و Outlook. عندما أحصل على هذا الجزء منه يعمل ، أود حقًا أن أعرض الوظيفة قائمة العناوين التي يمكن للمستخدم الاختيار منها ، أو طريقة أخرى لمنع المستخدم من التذكر وتكتب في عنوان برامج التشغيل و الناقل ، لكني أحب أن أعمل الكثير منه كما هو متوقع.

لن يُسمح/يجب أن يسمح البرنامج النصي إلا بالتشغيل في مجال Google الخاص بي مع مستخدمي ، وفي المرة الأولى التي قمت فيها بتنفيذها - كنت متأكدًا من أنني مررت بعملية التفويض ، لكن لا أفهم حقًا هذا الجزء من الأشياء.

إنهم يستخدمون حاليًا MS Excel/Outlook ويقومون بنسخ الصف واللصق في بريد إلكتروني يمكنهم استخدام جهات الاتصال الخاصة بهم للاختيار من بينها. إذا لم أتمكن من الحصول على الوظيفة لاستخدام جهات اتصال Googles ، كنت أفكر في إنشاء ورقة من السائقين مع وظيفة البحث أو شيء ما - نوع من الألم للحفاظ على قائمة عندما تكون جهات الاتصال هناك - لكنك تفعل ما يجب عليك فعله !

لا يوجد حل صحيح

نصائح أخرى

اقرأ الأذونات والوظائف المخصصة. نظرًا لأن الوظائف المخصصة (البرامج النصية التي تسمى من وظائف جدول البيانات) مفتوحة لأي مستخدم لجدول بيانات ، فلا يُسمح لها باستخدام أي خدمة تتطلب المصادقة. لهذا السبب لا يمكنك إرسال بريد من واحد.

هذا يختلف عن عملية تفويض البرنامج النصي للوصول إلى خدماتك. هذا يجعل رسالة الخطأ مربكة ، لكن كن مطمئنًا إلى أن الطريقة التي كنت تستدعي بها النص.

لا توجد مشكلة ، لأن الوظيفة المخصصة هي وسيلة سيئة لأداء هذا النوع من الإجراء على أي حال ، لأنه سيتم إعادة تقييم الوظيفة في كل مرة يكون هناك تغيير في جدول البيانات ، وإرسال العديد من رسائل البريد الإلكتروني أكثر مما تريد.

أوصي بإنشاء عنصر قائمة لهذه العملية بدلاً من ذلك. (راجع رمز العينة المتوفرة في المحرر إذا قمت بإنشاء برنامج نصي جدول بيانات جديد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top