我遵循了这里的说明:如何从另一个项目运行谷歌应用程序脚本函数
意图运行在项目1中发生的、来自项目2的功能。
然而,正在发生的是,该功能正在项目2中进行。
这是一种正常的行为吗,还是我需要在项目1的函数中提供一个文件ID或类似的东西?
如有任何建议,我们将不胜感激!感谢
示例功能代码:
function loadSgdata() {
SpreadsheetApp.getActive().toast("Importing Subgrade Data...");
var FldrId = '10flFnQPAygo3PAkja9Gymm_RlZYMQHXh';
var FileName = 'SGMaster.rpt';
var sheet_Name = "Import Raw SG"
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet_Name)
ss.getRange('A1:A').clearContent();
//Reference to the folder
var fldr = DriveApp.getFolderById(FldrId);
//Get files by that name
var allFilesInFolder = fldr.getFilesByName(FileName);
Logger.log('allFilesInFolder: ' + allFilesInFolder);
if (allFilesInFolder.hasNext() === false) {
return false;
};
var cntFiles = 0;
//Even if it's only one file, must iterate a while loop in order to access the file (Google drive will allow multiple files of the same name)
var delimiter = "t"; // Added
while (allFilesInFolder.hasNext()) {
var thisFile = allFilesInFolder.next();
cntFiles = cntFiles + 1;
Logger.log('File Count: ' + cntFiles);
var docContent = thisFile.getBlob().getDataAsString(); // Modified
Logger.log('docContent : ' + docContent );
var csv = Utilities.parseCsv(docContent, delimiter); // Added
ss.getRange(ss.getLastRow() + 1, 1, csv.length, csv[0].length).setValues(csv); // Added
}
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet_Name)
r1=sheet.getRange("A26:A")
r2=sheet.getRange("A26:A")
data=r1.getValues();
for (i=0;i<data.length;i++)
{
data[i][0] = data[i][0].toString().substring(0,6) + data[i][0].toString().substring(14);
}
r2.setValues(data);
}
上面的函数在项目1中,作为项目2的库共享。然后我在项目2中使用以下命令运行它:函数runImportEngineers(({Conformance.loadSgdata((}但它在项目2中运行函数,而不是在项目1中。
您在评论中描述的内容正是使用库时应该发生的情况。
请在此处查看有关库的资源作用域参考部分。
资源 共享的* 未共享的**注释 站点、电子表格和其他容器 ✅ 对 getActive()
的调用返回包含脚本的容器