Google apps script 谷歌应用程序脚本中是否有存储私钥的地方或方式?

Google apps script 谷歌应用程序脚本中是否有存储私钥的地方或方式?,google-apps-script,httprequest,api-key,Google Apps Script,Httprequest,Api Key,我现在正在用谷歌应用程序脚本做一个小项目。我需要做的是向API发出GET和POST请求。我现在正在处理一个GET请求,并编写了下面的代码 var myApiKey = "123456789" const requestServer = (path, method, params = {}) => { if (method.toUpperCase() === "GET"){ var url = "https://api.xyz.c

我现在正在用谷歌应用程序脚本做一个小项目。我需要做的是向API发出GET和POST请求。我现在正在处理一个GET请求,并编写了下面的代码

var myApiKey = "123456789"
const requestServer = (path, method, params = {}) => {
  if (method.toUpperCase() === "GET"){
    var url = "https://api.xyz.com/" + path + "apikey=" + myApiKey; 
    var response = UrlFetchApp.fetch(url);
    var json = response.getContentText();
    var data = JSON.parse(json);
  } else if (method.toUpperCase() === "POST"){

  }
}
我用假url和apikey来问这个问题。 我的问题是,是否有一个地方或一种方法可以在Google应用程序脚本中存储myApiKey,比如.env文件?
如果是这样的话,我应该如何存储和隐藏我的密钥…

为了实现您的目标,下面三种模式如何

模式1: 在这个模式中,如何使用属性服务?当脚本运行时,可以使用Properties服务放置和检索该值

在这种情况下,首先需要将值输入到Properties服务

示例脚本:
var scriptProperties = PropertiesService.getScriptProperties();

// Put value.
scriptProperties.setProperty("key", "value");

// Get value.
var value = scriptProperties.getProperty("key");
var fileId = ScriptApp.getScriptId();

// Put value.
Drive.Files.update({properties: [{key: "key", value: "value"}]}, fileId);

// Get value.
var savedKey = "key";
var obj = Drive.Files.get(fileId).properties.filter(({key}) => key == savedKey);
if (obj.length == 0) throw new Error("No property for the inputted key");
var value = obj[0].value;
// Put value.
DriveApp.createFile("sample.txt", "value");

// Get value.
var value = DriveApp.getFileById("###fileId###").getBlob().getDataAsString().trim();
模式2: 在此模式中,如何使用自定义文件属性?可以使用驱动器API放置和检索该值

在这种情况下,首先需要将值输入到自定义文件属性中

示例脚本:
var scriptProperties = PropertiesService.getScriptProperties();

// Put value.
scriptProperties.setProperty("key", "value");

// Get value.
var value = scriptProperties.getProperty("key");
var fileId = ScriptApp.getScriptId();

// Put value.
Drive.Files.update({properties: [{key: "key", value: "value"}]}, fileId);

// Get value.
var savedKey = "key";
var obj = Drive.Files.get(fileId).properties.filter(({key}) => key == savedKey);
if (obj.length == 0) throw new Error("No property for the inputted key");
var value = obj[0].value;
// Put value.
DriveApp.createFile("sample.txt", "value");

// Get value.
var value = DriveApp.getFileById("###fileId###").getBlob().getDataAsString().trim();
模式3: 在这种模式中,使用临时文件怎么样?在这种情况下,可以像
.env file
一样使用它。首先,将值放入文件(在本例中,我认为可以使用文本文件和Google Docs文件)。并且,当脚本运行时,将从文件中检索该值并在脚本中使用它

示例脚本:
var scriptProperties = PropertiesService.getScriptProperties();

// Put value.
scriptProperties.setProperty("key", "value");

// Get value.
var value = scriptProperties.getProperty("key");
var fileId = ScriptApp.getScriptId();

// Put value.
Drive.Files.update({properties: [{key: "key", value: "value"}]}, fileId);

// Get value.
var savedKey = "key";
var obj = Drive.Files.get(fileId).properties.filter(({key}) => key == savedKey);
if (obj.length == 0) throw new Error("No property for the inputted key");
var value = obj[0].value;
// Put value.
DriveApp.createFile("sample.txt", "value");

// Get value.
var value = DriveApp.getFileById("###fileId###").getBlob().getDataAsString().trim();
参考资料:

非常感谢塔奈克!我正在阅读您给我的第一个解决方案,但在我的应用程序脚本项目中找不到service/propertyService.gs。。。你能告诉我文件在哪里吗?@Yuuu谢谢你的回复。对于给您带来的不便和我糟糕的英语水平,我深表歉意。不幸的是,我无法理解,但在我的应用程序脚本项目中找不到service/propertyService.gs。。。我可以问一下你当前问题的细节吗?顺便说一句,从你的回复中,我无法理解你正在使用的模式。我为此道歉。我也可以问你这件事吗?根据这些信息,我想确认你目前的情况。很抱歉,我不能很快解决您的问题。这是因为我的技术差。谢谢你的回复,塔奈克!因为您给了我三种解决方案,所以我选择模式1来解决这个问题(即使用属性服务)。然后我读了你给我的裁判()。在文档中,我看到必须将数据存储在service/propertyService.gs文件中,但我不确定service文件夹和propertyService.gs文件在哪里。顺便说一句,你的英语很好:)@Yuuu谢谢你的回复。给您带来不便,我深表歉意。从你的回复中,我理解了你看到的那一页。在这种情况下,
service/propertyService.gs
是示例文件名。因此,当您测试脚本时,请将脚本复制并粘贴到脚本编辑器中。这样,您就可以使用脚本了。@Yuuu谢谢您的回复。我不得不再次为我糟糕的英语水平道歉。不幸的是,我无法从你的回复中了解你目前的情况。如果我提出的答案对您的情况没有帮助,我对此表示歉意,并希望对其进行修改。那么,我能问一下你目前的情况吗?