gpt4 book ai didi

function - 从同一脚本文件中调用另一个函数

转载 作者:行者123 更新时间:2023-12-03 18:35:59 26 4
gpt4 key购买 nike

在这篇文章中,Serge 回复道:“但你当然可以在项目中使用来自不同脚本文件的任何函数”。

这样做的协议(protocol)是什么?

我有一个要在三个不同脚本中使用的函数。它非常密集,我正在不断改进它,所以我不想在函数之间复制和粘贴所有代码。这些文件都在同一个项目中。 Serge 在此链接上的回复是我能确认的最接近的回复,但它没有给出协议(protocol)。

How to make a call from one Google Apps Script to a function in another?

更具体地说,我有一个函数可以删除文件、获取模板、复制它、重命名它,然后用电子表格中的当前数据填充它。我想在几个电子邮件脚本中运行该功能,这些脚本在不同时间发出不同的消息,发送给不同的人。

谢谢!

莫格达回应后更新:

我有 5 个 .gs 文件,都在同一个脚本项目中(就像您在示例中显示的两个 .gs 文件一样。一个创建一个新文件(newFile.gs),另一个旨在在不同时间通过电子邮件将其发送给不同的受众.gs 文件之一的示例如下所示:

function emailNewDoc() {

//Here's where I want to run the script newFile.gs so that the new doc is created before the mail goes out

var message = "Hi,";
message += '<a href='+url+'>Here's the new document</a>' //url is defined in newDoc.gs after the new document is created

var subject = "The updated document"
var recipients = "xyz@xyz.com"

MailApp.sendEmail(recipients, subject, message);

}

如您所见,我不知道在第二行输入什么内容才能让 newFile.gs 作为 emailNewDoc.gs 的一部分运行。对不起,我很迂腐。我是一个新手,但如果我能弄清楚基础知识,我认为谷歌脚本将永远改变我的生活。

***在 SERGE 发表评论后编辑

Serge,这是原始 .gs 文件中的代码
function newFile() {

var docTemplate = "[insert template doc key here]"; //this one uses the document key, not the file name like mine did
var copy = DocsList.getFileById(docTemplate).makeCopy("my DOCUMENT");
var url = copy.getUrl();
var copyId = copy.getId();
var copyDoc = DocumentApp.openById(copyId);
var body = copyDoc.getActiveSection();
body.replaceText('{date}', Utilities.formatDate(new Date(sheet.getRange('A1').getValues()), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "MMM dd"));
}

如您所见,我定义了 URL,这就是我想要拉入另一个函数的变量,以便我可以通过电子邮件将其发送出去。

再次感谢!

最佳答案

我想我明白你问的问题。这是一个示例项目,它的功能可以用来设置我的解释:

scriptOne.gs:

  • 函数A();
  • 函数B();
  • 函数C();

  • scriptTwo.gs:
  • 函数D();
  • 函数E();
  • 函数F();

  • 在 scriptOne.gs 中,我可以简单地调用 functionD():
    functionA() {
    functionD();
    }

    functionB() {
    }

    functionC() {
    }

    我知道它看起来 super 初级,但我使用这个简单的命名法来调用其他项目的函数。这对你不起作用吗?如果您可以提供一个明确的示例来说明您要达到的目标,我可以尝试给您一个更好的答案。

    如果您尝试在一行中运行 scriptTwo.gs 中的所有函数,那么我将创建一个 runScriptTwo() scripTwo.gs 中的函数,它调用 scriptTwo.gs 文件中的所有函数。然后您可以调用您的 runScriptTwo()在我的第一个代码中,而不是调用 functionD() .那有意义吗?

    关于function - 从同一脚本文件中调用另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20428462/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com